gpt4 book ai didi

javascript - 根据字符串数组过滤对象数组 "with partial match"

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:04 25 4
gpt4 key购买 nike

我有一个对象数组,我想根据另一个字符串数组的值过滤它,并删除不包含任何字符串的对象。

我尝试对字符串数组使用 split 并在 forEach 中搜索每个术语,但它没有用,然后尝试了以下用作过滤器的方法,但它过滤的是完全匹配而不是部分匹配。

var employees = [
{"name": "zxc asd", "age":"30"},
{"name": "asd", "age":"24"},
{"name": "qwe", "age":"44"},
{"name": "zxc", "age":"28"},
];

var keepNames = ["asd", "qwe"];

keepNames = keepNames.map(name => {
return name.toLowerCase();
});


var filteredEmployees = employees.filter(emp => {
return keepNames.indexOf(emp.name.toLowerCase()) !== -1;
});

console.log( filteredEmployees );

Expected Output[  
{"name": "zxc asd", "age":"30"},
{"name": "asd", "age":"24"},
{"name": "qwe", "age":"44"}];

Actual Output [
{"name": "asd", "age":"24"},
{"name": "qwe", "age":"44"}]

如果有任何帮助,我将不胜感激。提前致谢

最佳答案

您还需要使用名称 keep 迭代数组并检查值。

var employees = [{ name: "zxc asd", age: "30" }, { name: "asd", age: "24" }, { name: "qwe", age: "44" }, { name: "zxc", age: "28" }],
keep = ["asd", "qwe"],
filtered = employees.filter(({ name }) =>
keep.some(n => name.toLowerCase().includes(n))
);

console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 根据字符串数组过滤对象数组 "with partial match",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58250401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com