Cum pot adăuga un obiect (cum ar fi un șir de caractere sau un număr) pentru o matrice în JavaScript?
Utilizați Array.prototype.push
metoda pentru a adăuga valori pentru a o matrice:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Puteți folosi push()` funcția de a adăuga mai mult de o valoare pentru o matrice într-un singur apel:
// 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]);
}
Update
Dacă doriți să adăugați elemente de la o serie la alta matrice, puteți utiliza firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Update
Doar o completare la acest răspuns, dacă doriți să adăugați orice valoare la începutul unei matrice asta înseamnă că la primul indice, atunci puteți folosi Array.prototype.unshift
pentru acest scop.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Acesta susține, de asemenea, adăugarea de mai multe valori dintr-o dată ca "push".
Daca're doar adăugarea unei singure variabile, atunci push()
lucreaza bine. Dacă aveți nevoie să adăugați o altă matrice, utilizare concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
La concat nu afectează ar1 " și " ar2
dacă repartizat, de exemplu:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
O mulțime de mare de informații aici.
Unele rapidă benchmarking (fiecare test = 500k adăugat elemente și rezultatele sunt medii de multiple puncte) a arătat următoarele:
Firefox 3.6 (Mac):
arr[arr.lungime] = b
este mai rapid (300ms vs 800ms)arr.push(b)
este mai rapid (500ms vs 900ms)Safari 5.0 (Mac):
arr[arr.lungime] = b
este mai rapid (90ms vs 115ms)arr[arr.lungime] = b
este mai rapid (160ms vs 185ms)Google Chrome 6.0 (Mac):
Îmi place arr.push()
sintaxa mai bine, dar cred că m-am'd fi mai bine cu arr[arr.lungime]
Versiune, cel puțin în prime viteza. Am'd dragoste pentru a vedea rezultatele de IE fugă.
Mi benchmarking bucle:
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;
}
}
Cred că's de remarcat faptul că împinge poate fi numit cu mai multe argumente, care va fi anexată la matrice în ordine. De exemplu:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
Ca urmare a acest lucru, puteți utiliza împinge.se aplică pentru a adăuga o serie la alta matrice astfel:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
Adnotat ES5 are mai multe informații cu privire la exact ceea ce push și se aplică face.
2016 update: cu răspândirea, nu't nevoie "aplică" mai, cum ar fi:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Puteți utiliza "push" și "aplică" funcție pentru a adăuga două tablouri.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Aceasta va adăuga array2 " la " array1
. Acum array1conține
[11, 32, 75, 99, 67, 34]`.
Acest cod este mult mai simplu decât să scriu "pentru" bucle pentru a copia fiecare elemente în matrice.
Cu noul ES6 răspândirea operator, care unește două tablouri folosind "push", devine chiar mai ușor:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Aceasta adaugă conținutul de arr2pe la sfârșitul lui
arr`.
Javascript cu ECMAScript 5 standard care este susținută de cele mai multe browsere acum, puteți utiliza pentru a aplica()pentru a adăuga
array1 " la " 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 cu ECMAScript 6 standard care este susținută de Chrome si FF si IE Margine, puteți folosi "răspândit" operator:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
Diferența operatorul va înlocui `array2.push(...array1); " cu " array2.push(3, 4, 5); când browser-ul este gândirea logica.
Bonus
Daca'd place să crea alt variabile pentru a stoca toate elementele din ambele matrice, puteți face acest lucru:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
Răspândirea operator (...
) este de a răspândi toate elementele dintr-o colecție.
Dacă doriți să adăugați două tablouri -
var a = ['a', 'b'];
var b = ['c', 'd'];
atunci ai putea folosi:
var c = a.concat(b);
Și dacă doriți să adăugați o înregistrare " g " pentru array (var o= []
), atunci ai putea folosi:
a.push('g');
Există o serie de moduri de a adăuga o matrice în JavaScript:
1) push()` metoda adaugă unul sau mai multe elemente de la sfârșitul unei matrice și returnează noua lungimea de matrice.
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
Ieșire:
[1, 2, 3, 4, 5]
2) La unshift()
metoda adaugă unul sau mai multe elemente de la începutul unei matrice și returnează noua lungimea de matrice:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
Ieșire:
[4, 5, 1, 2, 3]
3) La concat()
metoda este folosit pentru a uni două sau mai multe tablouri. Această metodă nu se schimba existente tablouri, dar în loc de a se întoarce o nouă matrice.
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
Ieșire:
[ "a", "b", "c", "d", "e", "f" ]
4) puteți utiliza matrice's `.lungimea de proprietate pentru a adăuga un element la sfârșitul matrice:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
Ieșire:
["one", "two", "three", "four"]
5) La `splice () metoda modifică conținutul unei matrice prin eliminarea de elemente existente și/sau adăugarea de noi elemente:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
Ieșire:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) de asemenea, puteți adăuga un element nou la o serie pur și simplu prin specificarea unui index nou și atribuirea unei valori de:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
Ieșire:
["one", "two","three","four"]
Push()` metoda adaugă noi elemente la sfârșitul unei matrice și returnează noua lungime. Exemplu:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
Răspunsul exact la întrebarea ta este deja răspuns, dar las's se uite la alte câteva moduri de a adăuga elemente într-o matrice.
Anii unshift()
metoda adaugă elemente noi la începutul unei matrice și returnează noua lungime. Exemplu:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
Și, în fine, concat()
metoda este folosit pentru a uni două sau mai multe tablouri. Exemplu:
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
Dacă știi cel mai mare indice (cum ar fi stocate într-o variabilă "i"), atunci puteți face
myArray[i + 1] = someValue;
Cu toate acestea, dacă nu't știu apoi, puteți utiliza fie
myArray.push(someValue);
ca și alte răspunsuri sugerate, sau puteți folosi
myArray[myArray.length] = someValue;
Rețineți că largă este pe zero, deci .lungime reveni cel mai mare indice plus unu.
De asemenea, rețineți că nu't trebuie să adăugați în ordine și puteți sări de fapt valori, ca în
myArray[myArray.length + 1000] = someValue;
În cazul în care valorile între va avea o valoare nedefinită.
Prin urmare, este o bună practică atunci când looping printr-un JavaScript pentru a verifica dacă o valoare există de fapt în acel moment.
Acest lucru poate fi realizat prin ceva cum ar fi următoarele:
if(myArray[i] === "undefined"){ continue; }
dacă sunteți sigur că nu't au orice zerouri în matrice, atunci puteți face:
if(!myArray[i]){ continue; }
Desigur, asigurați-vă că, în acest caz, nu't de a folosi ca starea myArray[i] (ca unii oameni de pe internet sugerează bazată pe finalul asta de indata ce am este mai mare, atunci cel mai mare indice se va reveni nedefinit, care se evaluează la false)
Adăugați Singur Element
//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';
Adăugați Mai Multe Elemente
//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
Adăugați matrice
//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length returnează numărul de siruri de caractere în matrice. JS este pe zero deci, următorul element cheie de matrice curentă de lungimea de matrice. EX:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
De Matrice.prototip.împinge adaugă unul sau mai multe elemente de la sfârșitul unei matrice și returnează noul lungimea de matrice, uneori, vrem doar pentru a obține noi up-to-data de matrice astfel încât să putem face ceva de genul asta:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
Sau doar:
[...arr, val] // [1, 2, 3, 4]