Как я могу добавить новые элементы массива в начале массива в Javascript?
мне нужно добавить или добавить элементы в начале массива.
например, если мой массив выглядит следующим образом:
[23, 45, 12, 67]
и ответ от моего AJAX вызова 34, Я хочу, чтобы обновленный массив следующим образом:
[34, 23, 45, 12, 67]
В настоящее время я планирую сделать это так:
var newArray = [];
newArray.push(response);
for (var i = 0; i < theArray.length; i++) {
newArray.push(theArray[i]);
}
theArray = newArray;
delete newArray;
есть ли лучший способ сделать это? Имеет ли Javascript какую-либо встроенную функциональность, которая делает это?
сложность из моего метода это O(n) и было бы действительно интересно увидеть лучшие реализации.
10 ответов:
использовать
unshift. Это какpush, за исключением того, что он добавляет элементы в начало массива вместо конца.
unshift/push- добавить элемент в начало и в конец массиваshift/pop- удалить и вернуть первый/последний элемент и массивпростая схема...
unshift -> array <- push shift <- array -> popи графике:
add remove start end push X X pop X X unshift X X shift X XПроверьте массив MDN документация. Практически каждый язык, который имеет возможность нажимать / pop элементы из массива, также будет иметь возможность unshift / shift (иногда называемый
push_front/pop_front) элементы, вы никогда не должны реализовать их самостоятельно.
в ES6 используйте оператор spread
...:демо
var arr = [23, 45, 12, 67]; arr = [34, ...arr]; // RESULT : [34,23, 45, 12, 67] console.log(arr)
другой способ сделать это через
concatvar arr = [1, 2, 3, 4, 5, 6, 7]; console.log([0].concat(arr));разницу между
concatиunshiftэтоconcatвозвращает новый массив. Спектакль между ними можно было найти здесь.function fn_unshift() { arr.unshift(0); return arr; } function fn_concat_init() { return [0].concat(arr) }вот результат теста
Быстрый Cheatsheet:
термины shift/unshift и push/pop могут быть немного запутанными, по крайней мере для людей, которые не знакомы с программированием в C.
Если вы не знакомы с жаргоном, вот быстрый перевод альтернативных терминов, которые могут быть легче запомнить:
* array_unshift() - (aka Prepend ;; InsertBefore ;; InsertAtBegin ) * array_shift() - (aka UnPrepend ;; RemoveBefore ;; RemoveFromBegin ) * array_push() - (aka Append ;; InsertAfter ;; InsertAtEnd ) * array_pop() - (aka UnAppend ;; RemoveAfter ;; RemoveFromEnd )
у вас есть массив:
var arr = [23, 45, 12, 67];добавить элемент в начало, вы хотите использовать
splice:var arr = [23, 45, 12, 67]; arr.splice(0, 0, 34) console.log(arr);
push()добавляет новый элемент в конец массива.pop()удаляет элемент из конца массива.
unshift()добавляет новый элемент в начало массива.shift()удаляет элемент из начала массива.использовать
theArray.unshift(response)
var testdata = new Array(); testdata = [23, 45, 12, 67]; testdata = [34, ...testdata]; console.log(testdata)
Если вам нужно постоянно вставлять элемент в начале массива, то быстрее использовать
pushзаявления с последующим вызовомreverse, вместоunshiftвсе время.
С помощью пуш, соединения, и индекс сначала вставляем элемент в массив
arrName.push('newName1'); arrName.splice(0, 0,'newName1'); arrName[0] = 'newName1';


Comments