我希望根据用户的输入变化过滤对象数组,并使用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}];我已经尝试过传递_.filter,但是这会过滤准确的单词和准确的情况,然后返回单个搜索的值。
const filtered = _.filter(listing, function(o) {
return o.title === "oi";
});
console.log(filtered);我想得到结果,就像我们在mysql中所做的那样:
WHERE title like %oi% 它给出了包含输入的匹配值。
谢谢
发布于 2017-11-16 06:16:13
请参阅用于lowerCase的片段,用于匹配大小写中的所有字符串,在您的示例中,您的字符串"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>
发布于 2017-11-16 06:10:02
在筛选函数中,使用包含函数
return o.title.includes("oi");发布于 2017-11-16 08:06:33
你根本不需要lodash,
只需使用正则表达式和本机筛选器即可:
listing.filter(o=>o.title.match(/oi/i))
https://stackoverflow.com/questions/47322743
复制相似问题