javascript : filter array of objects using another array as filter

标签 javascript arrays filter ecmascript-6

假设每个员工都是一个拥有

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/

相关文章:

javascript - 填充 3 个动态下拉菜单

c - 在c中打印数组的内容

python - 如何在 numpy 中创建一个新数组,并根据另一个数组从一个数组中选择元素?

javascript - 使用 AngularJS 过滤多个定义列表中的多个数组

javascript - 使用 jQuery 从表中删除 <tr>

javascript - 防止 Angular 中父作用域的摘要

javascript - 从 Google Earth Engine 上的 NEX-GDPDP 产品导出每日气候数据

c++ - 在参数化构造函数中将数组作为参数传递

带有卡住列的 jqgrid 切换过滤器工具栏不起作用

sharepoint - 如何将多个过滤器应用于共享点列表