我有一个要过滤的对象数组,但我不知道对象中的属性(既不是数据,也不是过滤器数组):

myArray = [
   { id: "100", area: "01", country: "AT"},
   { id: "101", area: "02", country: "DE"}, 
   { id: "102", area: "01", country: "DE"},
   { id: "103", area: "03", country: "CH"},
   { id: "104", area: "01", country: "AT"}
]

我的过滤器是:

myFilter = { area: "01", country: "AT" }

我想要退还这个:

myArrayFiltered = [
   { id: "100", area: "01", country: "AT"},
   { id: "104", area: "01", country: "AT"}
]

我该如何着手做这件事呢?明确地说,我不知道要搜索的属性,也就是说,我不知道myArray或myFilter将具有哪些属性.如果筛选器包含一个不在myArray中的键,我希望是一个空数组!

PS:我也不知道有多少条目将被过滤,也就是说,根据我的用户输入的内容,我只能获得:

myFilter = [ {area: "01"} ]

推荐答案

var myArray  = 
[
    { id: "100", area: "01", country: "AT"},
    { id: "101", area: "02", country: "DE"}, 
    { id: "102", area: "01", country: "DE"},
    { id: "103", area: "03", country: "CH"},
    { id: "104", area: "01", country: "AT"}
 ]

 var  myFilter = { area: "01", country: "AT" }

    var filteredArray = myArray.filter(function(item) {
        return Object.keys(myFilter).every(function(c) {
            return item[c] === myFilter[c];
        });
    } );
    
    console.log(filteredArray)

Javascript相关问答推荐

CSS背景过滤器忽略转换持续时间(ReactJS)

如何expose 像React在onChange、onClick等中所做的那样的参数?

React对话框模式在用户单击预期按钮之前出现

积分计算和 colored颜色 判断错误

Next.js Next/Image图像隐含性有任何类型-如何修复?

使用JavaScript重新排序行

Angular material 拖放堆叠的牌副,悬停时自动展开&

Spring boot JSON解析错误:意外字符错误

jQuery s data()[storage object]在vanilla JavaScript中?'

为什么!逗号和空格不会作为输出返回,如果它在参数上?

从Node JS将对象数组中的数据插入Postgres表

如何用拉威尔惯性Vue依赖下拉?

如何从URL获取令牌?

并不是所有的iframe都被更换

Angular 中的类型错误上不存在获取属性

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

DOM不自动更新,尽管运行倒计时TS,JS

将嵌套数组的元素乘以其深度,输出一个和

在SuperBase JS客户端中寻址JSON数据

通过解构/功能组件接收props-prop验证中缺少错误"