Правильный способ использования нотации распространения при добавлении объекта в массив? - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу push() объект в массив с использованием нотации распространения.

Я сделал это двумя способами, и каждый работал, но я хотел бы знать, какой путь правильный и в чем разница между ними.

const arr = [{ id: 1, color: red }, { id: 2, color: blue }] 
const obj = { id: 3, color: green }

Метод 1:

[...arr, obj]

Метод 2:

[...arr, ...obj]

Оба результата дают мне

[{ id: 1, color: red }, { id: 2, color: blue }, { id: 3, color: green }]

1 Ответ

0 голосов
/ 01 декабря 2018

Вы, вероятно, забыли о фигурных скобках вокруг ...obj.

Единственное различие между ними состоит в том, что { ...obj } создает неглубокую копию объекта obj, поэтому obj больше не будет равнятьсяobj внутри вновь созданного массива.

const o = { foo: 'bar' };

const a = [{ bar: 'z' }, o];
const b = [{ bar: 'z' }, { ...o }];

console.log(o === a[1]); // true
console.log(o === b[1]); // false

А по поводу вашего вопроса, какой из них является правильным - это зависит от вашего случая, однако в большинстве случаев достаточно первого метода.

...