我想根据用户的输入更改筛选对象数组,并使用LODASH创建一个新的匹配对象数组(https://lodash.com/)。
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}];
我尝试过lodash_.filter
,但它过滤了确切的单词和确切的大小写,然后返回单个搜索值。
const filtered = _.filter(listing, function(o) {
return o.title === "oi";
});
console.log(filtered);
我想得到的结果就像我们在mysql中做的那样:
WHERE title like %oi%
并且它给出包含该输入的匹配值。
感谢
查看片段,用于降低大小写以匹配大小写的所有字符串,在您的例子中,您的字符串"Oil&Gas"是Camel大小写的,当您尝试匹配该字符串时,它总是会导致空白数组。
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);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
在筛选函数中,使用includes函数即
return o.title.includes("oi");
您根本不需要lodash
,
只需使用正则表达式和本机过滤器即可:
listing.filter(o=>o.title.match(/oi/i))