Как добавить новые элементы массива в начале массива в 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
- удалить и вернуть первый / последний элемент and array
простой схеме...
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)
другой способ сделать это через concat
var 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
все время.
тест: http://jsben.ch/kLIYf
С помощью пуш, соединения, и индекс сначала вставляем элемент в массив
arrName.push('newName1');
arrName.splice(0, 0,'newName1');
arrName[0] = 'newName1';