首页 > 解决方案 > 使用基于另一个数组的对象动态过滤数组

问题描述

使用基于另一个数组的对象动态过滤数组。

我需要使用另一个数组过滤主数组。但是过滤器数组将只包含几个字段或几个。

    var codes = [{
"title": "lore",
"city": "New York",
"desc": "lorem lorem",
"age": "32"
 },
{
    "title": "lore2 ",
    "city": "Santa Monica",
    "desc": "lorem2",
    "age": "20"
  }

];

let filter = [{
  "city": "New York"
}, {
  "age": "20"
},

...或更多过滤器。此过滤器由单击复选框的人动态创建。

]

标签: javascriptarraysfilterarray.prototype.map

解决方案


这应该工作

let codes = [{
    "title": "lore",
    "city": "New York",
    "desc": "lorem lorem",
    "age": "20"
  },
  {
    "title": "lore2 ",
    "city": "Santa Monica",
    "desc": "lorem2",
    "age": "20"
  }
];

let filter = [{
  "city": "New York"
}, {
  "age": "20"
}];

let res = codes.filter(code => {
  return filter.every(f => {
    const [key, value] = Object.entries(f)[0];
    return code[key] == value
  });
});

console.log(res)


推荐阅读