Я хочу отфильтровать myArray
на основе критериев, указанных в myFilter
.Ключи myFilter определены и могут быть доступны с помощью myFilter.field
, myFilter.value
, где в качестве ключа: значение myArray
неизвестно.Возможно, нам придется перебрать каждый объект в myArray
, чтобы сначала сопоставить myArray [ключ] с myFilter.field
, а затем с этим myArray [ключ] с 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);