首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤器会产生像运算符(%oil%)这样的对象数组(%oil%)。

问过滤器会产生像运算符(%oil%)这样的对象数组(%oil%)。
EN

Stack Overflow用户
提问于 2017-11-16 06:07:10
回答 3查看 3.5K关注 0票数 0

我希望根据用户的输入变化过滤对象数组,并使用LODASH (https://lodash.com/)创建一个新的匹配对象数组。

代码语言:javascript
复制
let listing = [{title: "Courier/Logistics", id: 1, totalWorkers: 1058, openPositions: 0, omani: 99.72},
{title: "Information Technology", id: 1, totalWorkers: 2, openPositions: 1, omani: 50},
{title: "Oil & Gas", id: 1, totalWorkers: 98, openPositions: 6, omani: 91.84}];

我已经尝试过传递_.filter,但是这会过滤准确的单词和准确的情况,然后返回单个搜索的值。

代码语言:javascript
复制
const filtered = _.filter(listing, function(o) {
        return o.title === "oi";
      });
      console.log(filtered);

我想得到结果,就像我们在mysql中所做的那样:

代码语言:javascript
复制
WHERE title like %oi% 

它给出了包含输入的匹配值。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-16 06:16:13

请参阅用于lowerCase的片段,用于匹配大小写中的所有字符串,在您的示例中,您的字符串"Oil & Gas“是Camel大小写,当您试图匹配该字符串时,它总是会导致空数组。

​

代码语言:javascript
复制
let listing = [{title: "Courier/Logistics", id: 1, totalWorkers: 1058, openPositions: 0, omani: 99.72},
{title: "Information Technology", id: 1, totalWorkers: 2, openPositions: 1, omani: 50},
{title: "Oil & Gas", id: 1, totalWorkers: 98, openPositions: 6, omani: 91.84}];
const filtered = _.filter(listing, function(o) {
  return o.title.toLowerCase().indexOf("oi") > -1;
});
console.log(filtered);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

​

票数 2
EN

Stack Overflow用户

发布于 2017-11-16 06:10:02

在筛选函数中,使用包含函数

代码语言:javascript
复制
return o.title.includes("oi");
票数 1
EN

Stack Overflow用户

发布于 2017-11-16 08:06:33

你根本不需要lodash,

只需使用正则表达式和本机筛选器即可:

listing.filter(o=>o.title.match(/oi/i))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47322743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档