我需要有关如何过滤数组的帮助,
在 user_array 中,我有一些数组,如果 header_info.sap_number
与 valid_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/