const names = ['Evelynn', 'Kristy', 'Raymonde', 'Niki', 'Gigi', 'Gayle', 'Delfina', 'Helen', 'Micki', 'Danica'];
const a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const b = [3, 4, 5];
const c = a.map(id => ({
id,
name: names[id],
...b.indexOf(id) !== -1 && { hair: 'blodnd' }
// lub tak dla zwiększonej czytelności
// ...(b.indexOf(id) !== -1 && { hair: 'blond' })
// lub tak dla zmniejszonej czytelności
// ...!!~b.indexOf(id) && { hair: 'blond' }
}));
console.log(c);
...
to spread operator. Krótko mówiąc w tym przypadku rozpakowuje obiekt { hair: 'blond' }
na klucz i wartość i dodaje go do naszego głownego obiektu. &&
ma pierwszeństwo przed ...
, dlatego najpierw sprawdzany jest warunek, po czym ...
jest użyty na obiekcie, albo na boolean ze sprawdzenia.