假设每个员工都是一个拥有
emp1.age=30
emp1.name="Hang"
emp2.age=40
emp2.name="Dang"
emp3.age=50
emp3.name="Bang"
将其存储在数组中。
var orginialArray=[emp1,emp2,emp3];
我想用另一个字符串数组过滤或拼接数组。
我正在某处准备一组名称以与 originalArray
进行比较,然后从 originalArray
中删除不匹配的员工
var removeElements=["Hang","Dang"]
我试过 filter
但它最终在回调中发送了一个字符串,我无法让它工作
function filterItems(query) {
return orginialArray.filter((el) =>
el.toLowerCase().indexOf(query.toLowerCase()) > -1
)
}
console.log(filterItems(removeElements)); //i know this is wrong
目的是过滤原数组,只去掉名字不在元素数组中的员工。
我也试过 splice 但还是不行。
最佳答案
您可以使用 Array.filter()方法(您已经在使用)并仅当当前员工姓名不存在于 removeNames 数组(您可以使用 Array.indexOf() 检查)时才返回 true:
var employees = [
{"name": "abc", "age":"34"},
{"name": "pqr", "age":"34"},
{"name": "xyz", "age":"34"},
{"name": "xxx", "age":"34"},
];
var removeNames = ["xxx"];
// if required, make all removeNames elements lowerCase first
// removeNames = removeNames.map(function(name){
// return name.toLowerCase();
// });//map()
var filteredEmployees = employees.filter(function(emp){
return removeNames.indexOf(emp.name.toLowerCase()) === -1;
});//filter
console.log( filteredEmployees );
关于javascript : filter array of objects using another array as filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073470/