如果属性与列表匹配,Javascript 如何在 json 数组上使用 array.filter 返回整个数组

标签 javascript json

我需要有关如何过滤数组的帮助,

在 user_array 中,我有一些数组,如果 header_info.sap_numbervalid_sap_number array 中的任何内容匹配,我必须在其中进行比较,

如果该属性值与 valid_sap_number 数组 中的任何内容匹配,

它将保留该数组及其父数组,然后删除所有与 valid_sap_number 数组 中的任何值不匹配的其他数组,我不知道如何正确解释它,所以请参阅我的示例,谢谢,

我有这样的数组,

var valid_sap_number = ['1','2']
var user_array = 
[{
  "name":"User1",
  "header_info": [{ "sap_number":"1" }],
  "footer_info": [{ "site":"ABC" }]
}],
[{
  "name":"User2",
  "header_info": [{ "sap_number":"2" }],
  "footer_info": [{ "site":"ABCD" }]
}],
[{
  "name":"User3",
  "header_info": [{ "sap_number":"3" }],
  "footer_info": [{ "site":"ABC" }]
}];

/* This is my spaghetti code */

 const result = user_array.filter(user => function(a,b){        
            for(i = 0; i < valid_sap_number.length; i++)
            {
                if(b.header_info[0].sap_number == valid_sap_number[i]){
                    return true;     
                }
            }
        });

    console.log(result); 

预期输出

result =    [{
      "name":"User1",
      "header_info": [{ "sap_number":"1" }],
      "footer_info": [{ "site":"ABC" }]
    }],
    [{
      "name":"User2",
      "header_info": [{ "sap_number":"2" }],
      "footer_info": [{ "site":"ABCD" }]
    }];

最佳答案

您可以在过滤器函数中使用数组 includes 函数来检查当前项是否与值列表中的任何项匹配。

const result = user_array.filter(user => { 
  return valid_sap_number.includes(user[0].header_info[0].sap_number);
  });

关于如果属性与列表匹配,Javascript 如何在 json 数组上使用 array.filter 返回整个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49441423/

相关文章:

ios - 处理响应输出

java - 使用 Jquery 和 servlet 检索图像会产生 HTTP Status 500 错误

javascript - 如何迭代提交时传递的 knockout 表单元素

javascript - chrome等中的文本选择

c++ - QT5.7 - 为什么我使用 QString 得到格式错误的 json 值,但使用 std::string 却完美无缺?

java - 在 PUT Restful 服务中使用 JSON 对象

json - 如何将 Postgres 函数参数传递给 JSON 查询?

javascript - Django:语法错误:意外的标记<

javascript - 我可以在 JSDoc @return 中引用参数类型吗?

javascript - AngularJS:如何调试 'App Already Bootstrapped with this Element' 错误