ultimo - vetor javascript




Como posso adicionar novos elementos de matriz no início de uma matriz em JavaScript? (8)

Eu tenho a necessidade de adicionar ou preceder elementos no início de um array.

Por exemplo, se minha matriz se parece com abaixo:

[23, 45, 12, 67]

E a resposta da minha chamada AJAX é 34 , eu quero que o array atualizado seja como o seguinte:

[34, 23, 45, 12, 67]

Atualmente estou planejando fazer assim:

var newArray = [];
newArray.push(response);

for (var i = 0; i < theArray.length; i++) {
    newArray.push(theArray[i]);
}

theArray = newArray;
delete newArray;

Existe alguma maneira melhor de fazer isso? O Javascript tem alguma funcionalidade incorporada que faz isso?

A complexidade do meu método é O(n) e seria realmente interessante ver implementações melhores.


Com ES6, use o operador de spread ... :

DEMO

var arr = [23, 45, 12, 67];
arr = [34, ...arr]; // RESULT : [34,23, 45, 12, 67]

console.log(arr)


Na verdade, todos os unshift / push e shift / pop mudam o array de origem.

O unshift / push adiciona um item ao array existente desde o início / fim e o shift / pop remove um item do início / fim do array.

Mas há uma maneira de adicionar itens a uma matriz sem uma mutação. o resultado é uma nova matriz, para adicionar ao fim do uso da matriz abaixo do código:

const originArray = ['one', 'two', 'three'];
const newItem = 4;
const newArray = originArray.concat(newItem);

Para adicionar ao início da matriz original, use o código abaixo:

const originArray = ['one', 'two', 'three'];
const newItem = 0;
const newArray = (originArray.reverse().concat(newItem)).reverse();

Com o caminho acima, você adiciona ao início / fim de um array sem uma mutação.


Se você precisar inserir continuamente um elemento no início de uma matriz, será mais rápido usar instruções de push seguidas por uma chamada para reverse , em vez de chamar unshift o tempo todo.

Teste de benchmark: http://jsben.ch/kLIYf


Usando push, splice e número de índice , inserimos um elemento em um array em primeiro lugar

arrName.push('newName1');
arrName.splice(0, 0,'newName1');
arrName[0] = 'newName1';

você tem uma matriz: var arr = [23, 45, 12, 67];

Para adicionar um item ao começo, você deseja usar splice :

var arr = [23, 45, 12, 67];
arr.splice(0, 0, 34)
console.log(arr);


push() adiciona um novo elemento ao final de um array.
pop() remove um elemento do final de um array.

unshift() adiciona um novo elemento ao começo de um array.
shift() remove um elemento do começo de um array.

use theArray.unshift(response)


var testdata = new Array();
testdata = [23, 45, 12, 67];
testdata = [34, ...testdata]; 
console.log(testdata)
    


var a = [23, 45, 12, 67];
a.unshift(34);
console.log(a); // [34, 23, 45, 12, 67]





arrays