Вопрос: Как добавить что-то в массив?


Как добавить объект (например, строку или число) в массив в JavaScript?


2829


источник


Ответы:


Использовать push()функция для добавления в массив:

// initialize array
var arr = [
    "Hi",
    "Hello",
    "Bonjour"
];

// append new value to the array
arr.push("Hola");

console.log(arr);

Будет распечатан

["Hi", "Hello", "Bonjour", "Hola"]

Вы можете использовать push()функция для добавления более одного значения в массив в одном вызове:

// 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]);
}

Будет распечатан

Hi
Hello
Bonjour
Hola 
Salut
Hey

Обновить

Если вы хотите добавить элементы одного массива в другой массив, вы можете использовать firstArray.concat(secondArray):

var arr = [
    "apple",
    "banana",
    "cherry"
];

arr = arr.concat([
    "dragonfruit",
    "elderberry",
    "fig"
]);

console.log(arr);

Будет распечатан

["apple", "banana", "cherry", "dragonfruit", "elderberry", "fig"]

3327



Если вы добавляете только одну переменную, то push()работает просто отлично. Если вам нужно добавить другой массив, используйте concat():

var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];

var ar3 = ar1.concat(ar2);

alert(ar1);
alert(ar2);
alert(ar3);

Выплевывает:

"1,2,3"
"4,5,6"
"1,2,3,4,5,6"

Конкат не влияет ar1а также ar2если не указано переназначение, например:

ar1 = ar1.concat(ar2);
alert(ar1);

Отобразится:

"1,2,3,4,5,6"

Много интересной информации Вот


947



Некоторые быстрые бенчмаркинга (каждый тест = 500 тыс. Добавленных элементов и результаты являются средними из нескольких прогонов) показали следующее:

Firefox 3.6 (Mac):

  • Малые массивы: arr[arr.length] = bбыстрее (300 мс против 800 мс)
  • Большие массивы: arr.push(b)быстрее (500 мс против 900 мс)

Safari 5.0 (Mac):

  • Малые массивы: arr[arr.length] = bбыстрее (90 мс против 115 мс)
  • Большие массивы: arr[arr.length] = bбыстрее (160 мс против 185 мс)

Google Chrome 6.0 (Mac):

  • Малые массивы: Нет существенных различий (и Chrome - БЫСТРЫЙ! Только ~ 38 мс !!)
  • Большие массивы: Нет существенных различий (160 мс)

мне нравится arr.push()синтаксис лучше, но я думаю, мне было бы лучше с arr[arr.length]Версия, по крайней мере, с необработанной скоростью. Мне бы очень хотелось увидеть результаты IE.


Мои бенчмаркинга:

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;
    }
}

365



Я думаю, стоит упомянуть, что push можно вызвать с несколькими аргументами, которые будут добавлены в массив по порядку. Например:

var arr = ['first'];
arr.push('second', 'third');
console.log(arr); // ['first', 'second', 'third']

В результате этого вы можете использовать push.apply для добавления массива в другой массив следующим образом:

arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr); // ['first', 'second', 'third', 'forth', 'fifth']

Аннотированный ES5 имеет больше информации о том, что именно От себя а также подать заявление делать.

2016: с распространение , вам не нужно, чтобы applyбольше, например:

arr.push(...['fourth', 'fifth']);
console.log(arr) // ['first', 'second', 'third', 'fourth', 'fifth']

256



Вы можете использовать pushа также applyчтобы добавить два массива.

var array1 = [11, 32, 75];
var array2 = [99, 67, 34];

Array.prototype.push.apply(array1, array2);

Он добавит array2в array1, Теперь array1содержит [11, 32, 75, 99, 67, 34], Этот код намного проще, чем писать forчтобы скопировать все элементы в массиве.


64



Use concat:

a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);

a now contains all the elements, [1, 2, 3, 3, 4, 5].

Reference: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat


34



If arr is an array, and val is the value you wish to add use:

arr.push(val);

E.g.

arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);

will log:

['a', 'b', 'c', 'd']

33



With the new ES6 spread operator, joining two arrays using push becomes even easier:

var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

This adds the contents of arr2 onto the end of arr.

Babel REPL Example


33



If you want to append two arrays -

var a = ['a', 'b'];
var b = ['c', 'd'];

then you could use:

var c = a.concat(b);

And if you want to add record g to array (var a=[]) then you could use:

a.push('g');

27



Javascript with ECMAScript 5 standard which is supported by most browsers now, you can use apply() to append array1 to 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 with ECMAScript 6 standard which is supported by Chrome and FF and IE Edge, you can use the spread operator:

"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];

array2.push(...array1);

console.log(array2); // [1, 2, 3, 4, 5]

The spread operator will replace array2.push(...array1); with array2.push(3, 4, 5); when the browser is thinking the logic.

Bonus point

If you'd like to create another variable to store all the items from both array, you can do this:

ES5 var combinedArray = array1.concat(array2);

ES6 const combinedArray = [...array1, ...array2]

The spread operator (...) is to spread out all items from a collection.


23



The push() method adds new items to the end of an array, and returns the new length. Example:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");

// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi

The exact answer to your question is already answered, but let's look at some other ways to add items to an array.

The unshift() method adds new items to the beginning of an array, and returns the new length. Example:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");

// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango

And lastly, the concat() method is used to join two or more arrays. Example:

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

21



There are a couple of ways to append an array in JavaScript:

1) The push() method adds one or more elements to the end of an array and returns the new length of the array.

var a = [1, 2, 3];
a.push(4, 5);
console.log(a);

Output:

[1, 2, 3, 4, 5]

2) The unshift() method adds one or more elements to the beginning of an array and returns the new length of the array:

var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a); 

Output:

[4, 5, 1, 2, 3]

3) The concat() method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array.

var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);

Output:

[ "a", "b", "c", "d", "e", "f" ]

4) You can use the array's .length property to add an element to the end of the array:

var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar ); 

Output:

 ["one", "two", "three", "four"]

5) The splice() method changes the content of an array by removing existing elements and/or adding new elements:

var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);

Output:

["angel", "clown", "mandarin", "surgeon","nemo"]

6) You can also add a new element to an array simply by specifying a new index and assigning a value:

var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);

Output:

["one", "two","three","four"]

16