Risposte:
Utilizzare il Array.prototype.push
metodo per aggiungere valori a un array:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
È possibile utilizzare la push()
funzione per aggiungere più di un valore a un array in una singola chiamata:
// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];
// append multiple values to the array
arr.push("Salut", "Hey");
// display all values
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
Aggiornare
Se si desidera aggiungere gli elementi di un array a un altro array, è possibile utilizzare firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Aggiornare
Solo un'aggiunta a questa risposta se si desidera aggiungere qualsiasi valore all'inizio di un array che significhi al primo indice, è possibile utilizzare Array.prototype.unshift
a questo scopo.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Supporta anche l'aggiunta di più valori contemporaneamente, proprio come push
.
for
affatto (usa .forEach
).
length
proprietà. L'interprete fa un lavoro straordinario in questo e non farà alcuna differenza in The Real World se lo ottimizzi o meno. Se il tuo array diventa così grande che l'ottimizzazione .length
potrebbe davvero aiutare, molto probabilmente un array non è più la struttura dati corretta. L'uso forEach
ha i suoi vantaggi, ma è altamente dubbio che l'aumento delle prestazioni sarebbe uno di questi, poiché la chiamata di funzione per ogni iterazione comporta un costo e non risparmia nulla.
length
proprietà di un array non viene calcolata ogni volta che lo si chiama, è una variabile memorizzata array
nell'oggetto, che viene aggiornata solo quando si modifica l'array. Quindi, in effetti, non vi sono costi di prestazione arr.length
nell'inclusione della for
condizione.
forEach
incorporeranno le funzioni di callback (alcune di esse probabilmente lo fanno già) e non ci sarà alcuna differenza nel codice macchina generato, se la funzione viene chiamata abbastanza spesso per essere compilata anziché interpretata da l'autonomia. Lo stesso consiglio vale per qualsiasi lingua che non sia assemblatore, in realtà.
Se stai aggiungendo solo una singola variabile, allora push()
funziona bene. Se è necessario aggiungere un altro array, utilizzare concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
Il concat non influisce ar1
e, a ar2
meno che non venga riassegnato, ad esempio:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Molte informazioni fantastiche qui .
How do I append to an array in JavaScript?
, ma in concat
realtà crea un nuovo array. Questa è una differenza importante! Invece direi che la risposta di seguito di Omnimike è in realtà la migliore: Usa Push.apply per inviare un intero array a un array esistente senza crearne uno nuovo.
ar1 = ar1.concat(ar2);
verrà aggiunto aar1
ar1
, aggiungere ar2
e quindi restituire il nuovo array. Basta lasciare la parte di assegnazione ( ar1 = ...
) da quella riga di codice e vedrai che l' originale ar1
non è cambiato. Se vuoi evitare di fare una copia, ne avrai bisogno push
. Non credermi, credi nei documenti : "Il metodo concat () restituisce un nuovo array" Prima frase nei documenti per concat
.
ar2
sopra è comunque. Il risultato dello .push
scenario sarà = [ar1, [ar2]]
. .concat risolve questo problema, ma con sacrificio di velocità e una nuova matrice creata. Per utilizzare .push
correttamente gli accodamenti di array, eseguire prima il loop dell'elemento contenuto e premere ciascuno di essi. ar2.forEach(each => { ar1.push(each); });
Alcuni benchmark rapidi (ogni test = 500k elementi aggiunti e i risultati sono medie di più esecuzioni) hanno mostrato quanto segue:
Firefox 3.6 (Mac):
arr[arr.length] = b
è più veloce (300ms contro 800ms)arr.push(b)
è più veloce (500ms contro 900ms)Safari 5.0 (Mac):
arr[arr.length] = b
è più veloce (90ms contro 115ms)arr[arr.length] = b
è più veloce (160 ms contro 185 ms)Google Chrome 6.0 (Mac):
Mi piace arr.push()
meglio la sintassi, ma penso che starei meglio con la arr[arr.length]
versione, almeno a velocità raw. Mi piacerebbe comunque vedere i risultati di un IE.
I miei cicli di benchmarking:
function arrpush_small() {
var arr1 = [];
for (a = 0; a < 100; a++)
{
arr1 = [];
for (i = 0; i < 5000; i++)
{
arr1.push('elem' + i);
}
}
}
function arrlen_small() {
var arr2 = [];
for (b = 0; b < 100; b++)
{
arr2 = [];
for (j = 0; j < 5000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
}
function arrpush_large() {
var arr1 = [];
for (i = 0; i < 500000; i++)
{
arr1.push('elem' + i);
}
}
function arrlen_large() {
var arr2 = [];
for (j = 0; j < 500000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
Penso che valga la pena ricordare che push può essere chiamato con più argomenti, che verranno aggiunti all'array in ordine. Per esempio:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
Di conseguenza puoi usare push.apply per aggiungere un array ad un altro array in questo modo:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
ES5 con annotazioni ha maggiori informazioni su cosa fanno esattamente push e applica .
Aggiornamento 2016: con spread , non ti serve apply
più, come:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Array.prototype.push.apply()
però.
È possibile utilizzare push
e la apply
funzione per aggiungere due matrici.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Si aggiungerà array2
a array1
. Ora array1
contiene [11, 32, 75, 99, 67, 34]
. Questo codice è molto più semplice della scrittura di for
loop per copiare tutti gli elementi dell'array.
...
operatore invece di applicare const a1 = [] const a2 = [5,6,7] const.push(...a2)
modifica: evidenziazione della sintassi
array1.concat(array2)
in questa situazione. La chiamata a push
sembra superflua.
Con il nuovo operatore di diffusione ES6 , unire due array usando push
diventa ancora più semplice:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Questo aggiunge il contenuto di arr2
alla fine diarr
.
Se arr
è un array ed val
è il valore che si desidera aggiungere utilizzare:
arr.push(val);
Per esempio
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
Utilizzare concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);
JavaScript con ECMAScript 5 standard che è supportato dalla maggior parte dei browser ora, è possibile utilizzare apply()
per aggiungere array1
a array2
.
var array1 = [3, 4, 5];
var array2 = [1, 2];
Array.prototype.push.apply(array2, array1);
console.log(array2); // [1, 2, 3, 4, 5]
Javascript con ECMAScript 6 standard supportato da Chrome, FF e IE Edge, è possibile utilizzare l' spread
operatore:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
L' spread
operatore sostituirà array2.push(...array1);
con array2.push(3, 4, 5);
quando il browser sta pensando la logica.
Punto bonus
Se desideri creare un'altra variabile per archiviare tutti gli elementi da entrambi gli array, puoi farlo:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
L'operatore spread ( ...
) è quello di distribuire tutti gli elementi di una raccolta.
Se si desidera aggiungere due matrici -
var a = ['a', 'b'];
var b = ['c', 'd'];
allora potresti usare:
var c = a.concat(b);
E se si desidera aggiungere record g
a array ( var a=[]
), è possibile utilizzare:
a.push('g');
Il push()
metodo aggiunge nuovi elementi alla fine di un array e restituisce la nuova lunghezza. Esempio:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
La risposta esatta alla tua domanda ha già una risposta, ma diamo un'occhiata ad altri modi per aggiungere elementi a un array.
Il unshift()
metodo aggiunge nuovi elementi all'inizio di un array e restituisce la nuova lunghezza. Esempio:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
Infine, il concat()
metodo viene utilizzato per unire due o più array. Esempio:
var fruits = ["Banana", "Orange"];
var moreFruits = ["Apple", "Mango", "Lemon"];
var allFruits = fruits.concat(moreFruits);
// The values of the children array will be:
Banana, Orange, Apple, Mango, Lemon
Esistono un paio di modi per aggiungere un array in JavaScript:
1) Il push()
metodo aggiunge uno o più elementi alla fine di un array e restituisce la nuova lunghezza dell'array.
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
Produzione:
[1, 2, 3, 4, 5]
2) Il unshift()
metodo aggiunge uno o più elementi all'inizio di un array e restituisce la nuova lunghezza dell'array:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
Produzione:
[4, 5, 1, 2, 3]
3) Il concat()
metodo viene utilizzato per unire due o più array. Questo metodo non modifica gli array esistenti, ma restituisce invece un nuovo array.
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
Produzione:
[ "a", "b", "c", "d", "e", "f" ]
4) È possibile utilizzare la .length
proprietà dell'array per aggiungere un elemento alla fine dell'array:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
Produzione:
["one", "two", "three", "four"]
5) Il splice()
metodo modifica il contenuto di un array rimuovendo elementi esistenti e / o aggiungendo nuovi elementi:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
Produzione:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) È inoltre possibile aggiungere un nuovo elemento a un array semplicemente specificando un nuovo indice e assegnando un valore:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
Produzione:
["one", "two","three","four"]
push
fa: modifica l'array originale spingendo nuovi elementi su di esso. Sto leggendo questo errore o dovrebbe essere modificato?
Ora puoi sfruttare la sintassi ES6 e fare semplicemente:
let array = [1, 2];
console.log([...array, 3]);
mantenendo immutabile l'array originale.
Se conosci l'indice più alto (come memorizzato in una variabile "i"), puoi farlo
myArray[i + 1] = someValue;
Tuttavia, se non lo sai, puoi usare entrambi
myArray.push(someValue);
come suggerito da altre risposte, oppure puoi usarlo
myArray[myArray.length] = someValue;
Si noti che l'array è basato su zero, quindi .length restituisce l'indice più alto più uno.
Si noti inoltre che non è necessario aggiungere in ordine e in realtà è possibile saltare i valori, come in
myArray[myArray.length + 1000] = someValue;
Nel qual caso i valori intermedi avranno un valore indefinito.
È quindi una buona pratica quando si esegue il looping di un JavaScript per verificare che a quel punto esista effettivamente un valore.
Questo può essere fatto con qualcosa di simile al seguente:
if(myArray[i] === "undefined"){ continue; }
se sei certo di non avere zeri nell'array, puoi semplicemente fare:
if(!myArray[i]){ continue; }
Ovviamente assicurati in questo caso di non utilizzare come condizione myArray [i] (come alcune persone su Internet suggeriscono in base alla fine che non appena sarò maggiore allora l'indice più alto tornerà indefinito che valuta false)
"undefined"
. Deve leggere void 0
! "undefined"
è una stringa e "undefined" !== void 0
, quindi, if(myArray[i]
è falso a meno che l'array in indice non i
sia impostato sulla stringa con il contenuto equivalente di 'u'+'n'+'d'+'e'+'f'+'i'+'n'+'e'+'d'
. Si noti inoltre che non si dovrebbe usare undefined
, invece di usare void 0
. Perché void 0
è sempre il valore indefinito, mentre undefined
può essere definito tramite qualcosa di simile function x(undefined) { alert(undefined) } x("hello world")
, quindi non si può essere sicuri se qualcuno impostato accidentalmente window["undefined"]=1
o simile.
Aggiungi elemento singolo
//Append to the end
arrName.push('newName1');
//Prepend to the start
arrName.unshift('newName1');
//Insert at index 1
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element
// Replace index 3 (of exists), add new element otherwise.
arrName[3] = 'newName1';
Aggiungi più elementi
//Insert from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where insert starts,
//0: number of element to remove,
//newElemenet1,2,3: new elements
Aggiungi array
//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
arrName.push('newElemenet1, newElemenet2, newElemenet3')
?
arrName
fosse lungo 1
.
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length restituisce il numero di stringhe nell'array. JS è basato su zero, quindi la chiave dell'elemento successivo dell'array sarà la lunghezza corrente dell'array. EX:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
Voglio solo aggiungere uno snippet per l'aggiunta non distruttiva di un elemento.
var newArr = oldArr.concat([newEl]);
Poiché Array.prototype.push aggiunge uno o più elementi alla fine di un array e restituisce la nuova lunghezza dell'array , a volte vogliamo solo ottenere il nuovo array aggiornato in modo da poter fare qualcosa del genere:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
O semplicemente:
[...arr, val] // [1, 2, 3, 4]
puoi farlo utilizzando la nuova funzione javascript Es 6:
// initialize array
var arr = [
"Hi",
"Hello",
"Bangladesh"
];
// append new value to the array
arr= [...arr , "Feni"];
// or you can put a variable value
var testValue = "Cool";
arr = [...arr , testValue ];
console.log(arr);
// final output [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]
se vuoi combinare 2 array senza il duplicato puoi provare il codice qui sotto
array_merge = function (arr1, arr2) {
return arr1.concat(arr2.filter(function(item){
return arr1.indexOf(item) < 0;
}))
}
utilizzo:
array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)
Uscita: [1,2,3,4,5]
Per aggiungere un singolo elemento a un array, utilizzare il push()
metodo fornito dall'oggetto Array:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()
muta l'array originale.
Per creare invece un nuovo array, utilizzare il concat()
metodo Array:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
Si noti che in concat()
realtà non si aggiunge un elemento alla matrice, ma si crea una nuova matrice, che è possibile assegnare a un'altra variabile o riassegnare alla matrice originale (dichiarandola come let
, in quanto non è possibile riassegnare a const
):
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')
Per aggiungere un elemento multiplo a un array, è possibile utilizzarlo push()
chiamandolo con più argomenti:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
Puoi anche usare il concat()
metodo che hai visto prima, passando un elenco di elementi separati da una virgola:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
o un array:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
Ricordare che, come descritto in precedenza, questo metodo non muta l'array originale, ma restituisce un nuovo array.
Originariamente pubblicato su
Se si desidera aggiungere un singolo valore in un array, utilizzare semplicemente il metodo push. Aggiungerà un nuovo elemento alla fine dell'array.
Ma se hai intenzione di aggiungere più elementi, archivia gli elementi in un nuovo array e concatena il secondo array con il primo array ... in entrambi i modi.
arr=['a','b','c'];
arr.push('d');
//now print the array in console.log and it will contain 'a','b','c','d' as elements.
console.log(array);
Non abbiamo la funzione append per Array in javascript, ma abbiamo push e unshift , immagina di avere l'array di seguito:
var arr = [1, 2, 3, 4, 5];
e ci piace aggiungere un valore a questo array, possiamo fare, arr.push (6) e aggiungerà 6 alla fine dell'array:
arr.push(6); // return [1, 2, 3, 4, 5, 6];
inoltre possiamo usare unshift, guarda come possiamo applicare questo:
arr.unshift(0); //return [0, 1, 2, 3, 4, 5];
Sono le funzioni principali per aggiungere o aggiungere nuovi valori alle matrici.
Puoi usare il metodo push.
Array.prototype.append = function(destArray){
destArray = destArray || [];
this.push.call(this,...destArray);
return this;
}
var arr = [1,2,5,67];
var arr1 = [7,4,7,8];
console.log(arr.append(arr1));// [7, 4, 7, 8, 1, 4, 5, 67, 7]
console.log(arr.append("Hola"))//[1, 2, 5, 67, 7, 4, 7, 8, "H", "o", "l", "a"]
push()
aggiunge un nuovo elemento alla fine di un array.
pop()
rimuove un elemento dalla fine di un array.
Per aggiungere un oggetto (come una stringa o un numero) a un array usare -
array.push(toAppend);