慕慕森
2021-05-05 13:10:12
我希望myArray根據(jù)中提到的條件進(jìn)行過濾myFilter。myFilter的鍵已定義,可以使用進(jìn)行訪問myFilter.field,myFilter.value其中as的key:valuemyArray未知。我們可能必須遍歷每個對象,myArray才能首先將myArray [key]與匹配myFilter.field,然后再將myArray [key]與myFilter.value進(jìn)行匹配。那應(yīng)該是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貢獻(xiàn)1770條經(jīng)驗 獲得超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
提交
取消