Как добавить новый объект (пару ключ-значение) в массив в javascript?

У меня есть массив как:

items=[{'id':1},{'id':2},{'id':3},{'id':4}];

Как добавить новую пару {'id':5} в массив?

Ответы

Ответ 1

Используйте .push:

items.push({'id':5});

Ответ 2

.push() добавит элементы в конец массива.

Используйте .unshift(), если нужно добавить какой-либо элемент в начало массива, т.е.

items.unshift({'id':5});

Demo:

items = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}];
items.unshift({'id': 0});
console.log(items);

Ответ 3

Иногда .concat() лучше, чем .push(), поскольку .concat() возвращает новый массив, тогда как .push() возвращает длину массива.

Поэтому, если вы устанавливаете переменную, равную результату, используйте .concat().

items = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}];
newArray = items.push({'id':5})

В этом случае newArray вернет 5 (длина массива).

newArray = items.concat({'id': 5})

Однако здесь newArray вернет [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}, {'id': 5}] ,

Ответ 4

Если вы работаете с jQuery и у вас есть serializeArray, что касается ваших данных формы, например:

var postData = $('#yourform').serializeArray();

// postData (array with objects) : 
// [{name: "firstname", value: "John"}, {name: "lastname", value: "Doe"}, etc]

... и вам нужно добавить ключ/значение в этот массив с такой же структурой, например, при публикации в запросе PHP ajax, вот так:

postData.push({"name": "phone", "value": "1234-123456"});

Результат:

// postData : 
// [{name: "firstname", value: "John"}, {name: "lastname", value: "Doe"}, {"name":"phone","value":"1234-123456"}]