Как добавить что-либо в массив?

2895

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

Теги:
arrays
append

31 ответ

3782
Лучший ответ

Используйте функцию 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"]

Обновить

Просто добавление к этому ответу, если вы хотите добавить любое значение в начало массива, что означает первый индекс, тогда вы можете использовать unshift() для этой цели.

var arr = [1, 2, 3]
arr.unshift(0)
console.log(arr)

Распечатает:

[0, 1, 2, 3]

Он также поддерживает добавление нескольких значений, как метод push().

  • 97
    Обратите внимание, что возвращаемое значение .push - это не массив (или новый, например .concat), а целое число, представляющее новую длину массива.
  • 2
    Еще одна вещь, чтобы заметить. Не используйте arr.length в условии for , поместите его в переменную и используйте эту переменную в условии for . Нет необходимости пересчитывать length при каждом запуске, так как длина этого массива не меняется.
Показать ещё 10 комментариев
919

Если вы добавляете только одну переменную, то 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"

Много интересной информации здесь

  • 159
    Просто убедитесь, что люди ловят var ar3 = ar1.concat (ar2); часть. ar1.concat (ar2) не сохраняет значения в ar1. Вы должны поймать его, присвоив его ar3 или обратно ar1, например: ar1 = ar1.concat (ar2);
  • 26
    Я бы сказал, что это неправильный ответ на самом деле. Вопрос заключался в том, How do I append to an array in JavaScript? , но concat фактически создает новый массив. Это важное отличие! Вместо этого я бы сказал, что ответ Omnimike, приведенный ниже, на самом деле является лучшим: используйте Push.apply, чтобы поместить весь массив в существующий массив без создания нового.
Показать ещё 4 комментария
364

Некоторые быстрые бенчмаркинга (каждый тест = 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 - это FAST! Only ~ 38ms!!)
  • Большие массивы: Нет существенной разницы (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;
    }
}
  • 9
    Вопрос заключается в том, является ли .length сохраненным значением или вычисляется при обращении к нему, поскольку, если последнее является истинным, то может быть так, что использование простой переменной (такой как j) в качестве значения индекса может быть еще быстрее
  • 4
    +1 для статики, как вы делаете эти тесты?
Показать ещё 7 комментариев
269

Я думаю, стоит упомянуть, что 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 содержит больше информации о том, что push и применить.

2016: spread вам больше не понадобится apply, например:

arr.push(...['fourth', 'fifth']);
console.log(arr) // ['first', 'second', 'third', 'fourth', 'fifth']
  • 22
    лучший ответ для добавления массива элементов без создания нового массива.
  • 1
    @GabrielLittman Специально, потому что добавление в массив, IMHO, должно модифицировать массив, а не создавать новый.
Показать ещё 2 комментария
72

Вы можете использовать функции 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 для копирования всех элементов в массиве.

  • 0
    Это то, что мне нужно, сохранить исходную ссылку на массив
  • 0
    Если вы используете ES6 / 7, вы также можете использовать оператор ... вместо применения const a1 = [] const a2 = [5,6,7] const.push(...a2) edit: подсветка синтаксиса
37

С новым оператором ES6 объединение двух массивов с использованием push становится еще проще:

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

Это добавляет содержимое arr2 в конец arr.

Пример Babel REPL

37

Если arr - массив, а val - это значение, которое вы хотите добавить:

arr.push(val);

например.

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

будет записываться:

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

Используйте concat:

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

a теперь содержит все элементы [1, 2, 3, 3, 4, 5].

Ссылка: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat

29

Если вы хотите добавить два массива -

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

то вы можете использовать:

var c = a.concat(b);

И если вы хотите добавить запись g в массив (var a=[]), вы можете использовать:

a.push('g');
28

Javascript с стандартом ECMAScript 5, который теперь поддерживается большинством браузеров, вы можете использовать apply() для добавления array1 в 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 с стандартом ECMAScript 6, который поддерживается Chrome и FF и IE Edge, вы можете использовать оператор spread:

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

array2.push(...array1);

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

Оператор spread заменит array2.push(...array1); на array2.push(3, 4, 5);, когда браузер будет думать о логике.

Бонусная точка

Если вы хотите создать другую переменную для хранения всех элементов из обоих массивов, вы можете сделать это:

ES5 var combinedArray = array1.concat(array2);

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

Оператор спреда (...) состоит в том, чтобы разложить все элементы из коллекции.

24

Метод push() добавляет новые элементы в конец массива и возвращает новую длину. Пример:

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

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

Ответ на ваш вопрос уже ответил, но рассмотрим другие способы добавления элементов в массив.

Метод unshift() добавляет новые элементы в начало массива и возвращает новую длину. Пример:

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

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

И, наконец, метод concat() используется для объединения двух или более массивов. Пример:

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
20

Есть несколько способов добавить массив в JavaScript:

1) Метод push() добавляет один или несколько элементов в конец массива и возвращает новую длину массива.

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

Выход:

[1, 2, 3, 4, 5]

2) Метод unshift() добавляет один или несколько элементов в начало массива и возвращает новую длину массива:

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

Выход:

[4, 5, 1, 2, 3]

3) Метод concat() используется для объединения двух или более массивов. Этот метод не изменяет существующие массивы, но вместо этого возвращает новый массив.

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

Выход:

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

4) Вы можете использовать свойство array .length для добавления элемента в конец массива:

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

Выход:

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

5) Метод splice() изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые элементы:

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

Выход:

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

6) Вы также можете добавить новый элемент в массив, просто указав новый индекс и присвоив значение:

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

Выход:

["one", "two","three","four"]
  • 0
    Для 1) это говорит "без изменения исходного массива". Но это буквально то, что делает push : он модифицирует исходный массив, помещая в него новые элементы. Я читаю это неправильно, или это должно быть отредактировано?
16

Если вы знаете самый высокий индекс (например, хранящийся в переменной "i" ), вы можете сделать

myArray[i + 1] = someValue;

Однако, если вы не знаете, вы можете использовать

myArray.push(someValue);

как и другие ответы, или вы можете использовать

myArray[myArray.length] = someValue; 

Обратите внимание, что массив равен нулю, поэтому .length возвращает самый высокий индекс плюс один.

Также обратите внимание, что вам не нужно добавлять по порядку, и вы можете фактически пропускать значения, как в

myArray[myArray.length + 1000] = someValue;

В этом случае значения между ними будут иметь значение undefined.

Таким образом, хорошая практика при переходе через JavaScript для проверки того, что фактически существует значение в этой точке.

Это можно сделать следующим образом:

if(myArray[i] === "undefined"){ continue; }

если вы уверены, что у вас нет нулей в массиве, вы можете просто сделать:

if(!myArray[i]){ continue; }

Конечно, убедитесь, что в этом случае вы не используете в качестве условия myArray [i] (как полагают некоторые люди из Интернета, исходя из того, что, как только я будет больше, чем самый высокий индекс, он вернется undefined, который вычисляет значение false)

14

Теперь вы можете воспользоваться синтаксисом ES6 и просто сделать:

let array = [1, 2];
console.log([...array, 3]);

сохраняя исходный массив неизменным.

10

Пусть свойство длины массива выполняет работу:

myarray[myarray.length] = 'new element value added to the end of the array';

myarray.length возвращает количество строк в массиве. JS основан на нулевом значении, поэтому следующий ключ элемента массива будет текущей длиной массива. EX:

var myarray = [0, 1, 2, 3],
    myarrayLength = myarray.length; //myarrayLength is set to 4
9

concat(), конечно, можно использовать и с 2-мерными массивами. Не требуется цикл.

var a = [     [1, 2],     [3, 4]];

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

b = b.concat(a);

оповещения (б [2] [1]);//результат 2

9

Просто хочу добавить фрагмент для неразрушающего добавления элемента.

var newArr = oldArr.concat([newEl]);
6

Добавить значение в массив

Поскольку Array.prototype.push добавляет один или несколько элементов в конец массива и возвращает новую длину массива, иногда нам просто нужно получить новый обновленный массив, чтобы мы могли сделать что-то вроде этого:

const arr = [1, 2, 3];
const val = 4;

arr.concat([val]); // [1, 2, 3, 4]

Или просто:

[...arr, val] // [1, 2, 3, 4]
  • 2
    Исправьте с ES6 для отдыха оператора.
6

, вы можете сделать это, используя новую функцию 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' ]
  • 0
    Это не добавляет значение к массиву, что и было задано OP. Это создает новый массив с содержимым старого массива и новыми элементами. На самом деле это Array.concat.
6

Если вы используете ES6, вы можете использовать spread для этого.

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

var arr2 = [
    "dragonfruit",
    "elderberry",
    "fig"
];

arr.push(...arr2);
5

если вы хотите объединить 2 массива без дубликата, вы можете попробовать код ниже

array_merge = function (arr1, arr2) {
  return arr1.concat(arr2.filter(function(item){
    return arr1.indexOf(item) < 0;
  }))
}

использование:

array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)

Вывод: [1,2,3,4,5]

4

Добавить единственный элемент

//Append at first
arrName.push('newName1');

//Append at last
arrName.unshift('newName1');

//Append at index 1
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element


//Append at index 3
arrName[3] = 'newName1';

Добавить несколько элементов

//Append from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where append start, 
//0: number of element to remove, 
//newElemenet1,2,3: new elements

Добавить массив

//join two or more array
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different array which is to be append to the existing array
  • 0
    Почему не arrName.push('newElemenet1, newElemenet2, newElemenet3') ?
  • 1
    В push () он вставляет элемент последним, но в моем примере он вставляет элемент посередине, т.е. из индекса массива 1 (согласно примеру) @Mihail Malostanidis
Показать ещё 1 комментарий
4

Вы .push() это значение в. Пример: array.push(значение);

4

Если вы хотите добавить одно значение в массив, просто используйте метод push. Это добавит новый элемент в конец массива.

Но если вы намереваетесь добавить несколько элементов, то сохраните элементы в новом массиве и объедините второй массив с первым массивом... в любом случае.

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);
2

У нас нет функции append для Array в javascript, но у нас есть push и unshift, представьте, что у вас есть массив ниже:

var arr = [1, 2, 3, 4, 5];

и нам нравится добавлять значение к этому массиву, мы можем сделать, arr.push(6), и он добавит 6 к концу массива:

arr.push(6); // return [1, 2, 3, 4, 5, 6];

Также мы можем использовать unshift, посмотрим, как мы можем применить это:

arr.unshift(0); //return [0, 1, 2, 3, 4, 5];

Они являются основными функциями добавления или добавления новых значений в массивы.

1

Добавить один элемент

Чтобы добавить отдельный элемент в массив, используйте метод push() предоставленный объектом Array:

const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)

push() изменяет исходный массив.

Чтобы создать новый массив, используйте метод Array concat():

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)

Обратите внимание, что concat() самом деле не добавляет элемент в массив, но создает новый массив, который можно назначить другой переменной или переназначить исходному массиву (объявив его как let, поскольку вы не можете переназначить const):

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')

Добавить несколько элементов

Чтобы добавить несколько элементов в массив, вы можете использовать push(), вызывая его с несколькими аргументами:

const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)

Вы также можете использовать метод concat() который вы видели ранее, передавая список элементов, разделенных запятой:

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)

или массив:

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)

Помните, что, как описано ранее, этот метод не изменяет исходный массив, но возвращает новый массив.

Первоначально опубликовано на

1

Вы можете использовать метод 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"]
0

Вы можете использовать push(), если хотите добавить значения, например, arr.push("Test1", "Test2");

Если у вас есть массив, вы можете использовать concat(), например, Array1.concat(Array2)

Если у вас есть только один элемент, который вы можете добавить, вы также можете попробовать метод длины, например array[aray.length] = 'test';

0

Добавление элементов в массив

let fruits =["orange","banana","apple","lemon"]; /*array declaration*/

fruits.push("avacado"); /* Adding an element to the array*/

/*displaying elements of the array*/

for(var i=0; i < fruits.length; i++){
  console.log(fruits[i]);
}
0

push() добавляет новый элемент в конец массива.
pop() удаляет элемент из конца массива.

Чтобы добавить объект (например, строку или число) к массиву, используйте -
array.push(toAppend);

0

Использование метода push() добавит элемент в массив. См. Пример ниже.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню