let a = ["4", "2"];
let b = [{"item": "1"}, {"item": "4"}, {"item": "2"}, {"item": "3"}];
const trueValues = new Set(a);
let c = b.map(obj => ({"item": trueValues.has(obj["item"])}));
Это приводит к:
[{"item": false}, {"item": true}, {"item": true}, {"item": false}]
IE11 не будет поддерживать new Set(item1)
, вам потребуется:
const trueValues = new Set()
a.forEach(item => trueValues.add(item))
Ваш код приводит к
[{"item": true}, {"item": true}, {"item": false}, {"item": false}]
потому что вы берете все истины, а затем добавляете все ложные значения:
[...newItem, ...addOtherItems]
Если вы хотите отобразить массив в другой массив, вы должны просто использовать карту как
Для IE9 вы можете использовать что-то вроде этого:
b.map(b_i => ({item: a.some(a_i => a_i === b_i.item)}));