我希望myArray根据中提到的条件进行过滤myFilter。myFilter的键已定义,可以使用进行访问myFilter.field,myFilter.value其中as的key:valuemyArray未知。我们可能必须遍历每个对象,myArray才能首先将myArray [key]与匹配myFilter.field,然后再将myArray [key]与myFilter.value进行匹配。那应该是AND逻辑myArray = [{ make: "Honda", model: "CRV", year: "2017" }, { make: "Toyota", model: "Camry", year: "2020" }, { make: "Chevy", model: "Camaro", year: "2020" }]myFilter = [{ field: "make", value: "Chevy", type: "string" }, { field: "year", value: "2020", type: "date" }];// Expected OutPut:myArray = [{ make: "Chevy", model: "Camaro", year: "2020"}]var tempArray = [];const keysToMatch = myFilter.length;let matchedItems = [];myArray.forEach((data) => { matchedItems = []; let itemsToFind = Object.values(data); myFilter.forEach((filterItem) => { if (itemsToFind.indexOf(filterItem.value) != -1) { matchedItems.push("matched"); } }); //check if everything matched if (matchedItems.length === keysToMatch) { tempArray.push(data); }});console.log(tempArray);
3 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
var tempArray = [];
const keysToMatch = myFilter.length;
let matchedItems = [];
myArray.forEach((data) => {
matchedItems = [];
let itemsToFind = Object.values(data);
myFilter.forEach((filterItem) => {
if (itemsToFind.indexOf(filterItem.value) != -1) {
matchedItems.push("matched");
}
});
//check if everything matched
if (matchedItems.length === keysToMatch) {
tempArray.push(data);
}
});
console.log(tempArray);
添加回答
举报
0/150
提交
取消