Альтернативой является использование функции filter
и функции includes
для фильтрации этих объектов с ключами === item и существования с массивом MyArrayDefinition
.
. В этом примере есть следующий объект, значения которогоне существует в пределах MyArrayDefinition
:
{
"shop": "shop33",
"item1": "my apple 33",
"item2": "my carrot 33"
}
const myArray = [{ "shop": "shop1", "item1": "my apple 1 my fruit", "item2": "my carrot 1",}, { "shop": "shop2", "item1": "my apple 0", "item2": "my carrot 1",}, { "shop": "shop2", "item1": "my apple 0", "item2": "my carrot 0",}, { "shop": "shop33", "item1": "my apple 33", "item2": "my carrot 33",}],
MyArrayDefinition = [{ "item": "my apple 0", "color": "red", "group": "my fruit", "score": 0}, { "item": "my carrot 1", "color": "orange", "group": "my vegetable", "score": 1}, { "item": "my apple 1", "color": "red", "group": "my fruit", "score": 1}, { "item": "my carrot 0", "color": "orange", "group": "my vegetable", "score": 0}],
mappedItems = MyArrayDefinition.map(({item}) => item), // convert to an array with only values from item.
result = myArray.filter(o => Object.keys(o).some(k => k.includes('item') && mappedItems.includes(o[k]))); // get the object with at least one key === item and which value exists within mappedItems.
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }