Ako v jazyku JavaScript pripojím objekt (napríklad reťazec alebo číslo) k poľu?
Na pridanie hodnôt do poľa použite metódu Array.prototype.push
:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Funkciu push()
môžete použiť na pridanie viac ako jednej hodnoty do poľa v rámci jedného volania:
// 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]);
}
Aktualizácia
Ak chcete pridať položky jedného poľa do iného poľa, môžete použiť firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Aktualizácia
Len doplnenie k tejto odpovedi, ak chcete pridať akúkoľvek hodnotu na začiatok poľa, teda na prvý index, potom môžete na tento účel použiť Array.prototype.unshift
.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Podporuje aj pridávanie viacerých hodnôt naraz rovnako ako push
.
Ak pridávate len jednu premennú, potom push()
funguje bez problémov. Ak potrebujete pripojiť ďalšie pole, použite concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
Konkat neovplyvňuje ar1
a ar2
, pokiaľ nie je napríklad preradený:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Veľa skvelých informácií tu.
Rýchle porovnávanie (každý test = 500k pripojených prvkov a výsledky sú priemermi viacerých behov) ukázalo nasledovné:
Firefox 3.6 (Mac):
arr.push(b)
je rýchlejšie (500 ms vs. 900 ms)Safari 5.0 (Mac):
Google Chrome 6.0 (Mac):
Syntax arr.push()
sa mi páči viac, ale myslím, že by som bol lepší s verziou arr[arr.length]
, aspoň čo sa týka rýchlosti. Rád by som však videl výsledky behu v IE.
Moje porovnávacie slučky:
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;
}
}