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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2 893
0
3 847 498
30
Перейти к ответу Данный вопрос помечен как решенный

Ответы 30

Ответ принят как подходящий

Используйте метод Array.prototype.push для добавления значений в конец массива:

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

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

console.info(arr);

Вы можете использовать функцию 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.info(arr[i]);
}

Обновлять

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

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

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

console.info(arr);

Обновлять

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

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

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


Обновлять

Другой способ с синтаксисом ES6 - вернуть новый массив с синтаксис распространения. Это оставляет исходный массив без изменений, но возвращает новый массив с добавленными новыми элементами в соответствии с духом функционального программирования.

const arr = [
  "Hi",
  "Hello",
  "Bonjour",
];

const newArr = [
  ...arr,
  "Salut",
];

console.info(newArr);

Обратите внимание, что возвращаемое значение .push - это не массив (или новый, например .concat), а целое число, представляющее новую длину массива.

Jay 10.01.2016 03:09

Еще одна вещь, на которую стоит обратить внимание. Не используйте arr.length в условии for, поместите его в переменную и используйте эту переменную в условии for. Нет необходимости пересчитывать length при каждом запуске, поскольку длина этого массива не меняется.

RST 23.02.2016 12:08

@RST: вообще не используйте for (используйте .forEach).

Robert Siemer 25.02.2016 20:57

@RobertSiemer Не уверен, о чем вы говорите. Переход от for к foreach не повлияет на выполнение, они оба будут работать. И, вероятно, есть еще больше способов сделать это. Я добавил свой комментарий только потому, что эти ответы, кажется, использовались, и я очень ценил их, хотя у них есть недостаток, особенно когда у вас большие массивы.

RST 25.02.2016 21:29

@RST, я хочу сказать: исправление состоит не в том, чтобы копировать arr.length в переменную, а в том, чтобы вообще не использовать arr.length.

Robert Siemer 26.02.2016 00:34

Я бы сказал, что исходный код в порядке. Нет никакой необходимости оптимизировать доступ к свойству length. Интерпретатор отлично справляется с этим сам, и в реальном мире не будет никакой разницы, оптимизируете вы его или нет. Если ваш массив становится настолько огромным, что оптимизация .length действительно может помочь, скорее всего, массив больше не является правильной структурой данных. Использование forEach имеет свои преимущества, но весьма сомнительно, что повышение производительности будет одним из них, поскольку вызов функции для каждой итерации влечет за собой затраты и ничего не сохраняет.

Stijn de Witt 03.04.2016 16:31

@RobertSiemer Свойство массива length не вычисляется каждый раз, когда вы его вызываете, это переменная, хранящаяся в объекте array, который обновляется только при изменении массива. Таким образом, включение arr.length в состояние for фактически не приводит к снижению производительности.

mikeyq6 09.06.2016 19:39

@ mikeyq6: Я никогда не спорил о скорости. Использование .length подвержено одноразовым ошибкам. .forEach нет.

Robert Siemer 13.06.2016 19:41

@RobertSiemer coderwall.com/p/kvzbpa/don-t-use-array-foreach-use-for-inste‌ объявление. Человек, как новичку, действительно трудно понять, кому верить, ха-ха

Mojimi 27.09.2017 20:48

@Mojimi Как новичок игнорируйте любые советы, касающиеся вопросов производительности в таких крайних случаях, как этот. Используйте более выразительный синтаксис. Со временем среды выполнения Javascript добавляют все больше и больше оптимизаций - они будут встраивать функции обратного вызова forEach (некоторые из них, вероятно, уже делают это), и не будет никакой разницы в сгенерированном машинном коде, если функция вызывается достаточно часто для компиляции вместо интерпретации по времени выполнения. То же самое можно сказать и о любом языке, кроме ассемблера.

Mörre 17.12.2017 12:35

Concat не добавляется в список, он создает новый. Для подхода, который действительно добавляется к существующему списку и является более производительным, используйте подход из ответа Omnimike ниже (используйте push.apply или оператор распространения с push).

Anomaly 27.04.2020 23:41

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

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

var ar3 = ar1.concat(ar2);

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

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

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

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

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

Просто убедитесь, что люди улавливают var ar3 = ar1.concat (ar2); часть. ar1.concat (ar2) не сохраняет значения в ar1. Вы должны поймать его, присвоив ar3 или обратно ar1, например: ar1 = ar1.concat (ar2);

vbullinger 13.07.2013 02:47

Я бы сказал, что это неправильный ответ. Вопрос был How do I append to an array in JavaScript?, но concat на самом деле создает массив новый. Это важное различие! Вместо этого я бы сказал, что приведенный ниже ответ Omnimike на самом деле является лучшим: используйте Push.apply, чтобы протолкнуть весь массив в существующий массив без создания нового.

Stijn de Witt 18.09.2015 16:09

@StijndeWitt, вы все равно можете добавить без создания нового массива, как указано в предыдущем комментарии, ar1 = ar1.concat(ar2); будет добавлен в ar1

cameronjonesweb 01.04.2016 04:30

@cameronjonesweb Фактически, он создает новый массив с тем же содержимым, что и ar1, добавляет ar2 и затем возвращает новый массив. Просто оставьте часть присваивания (ar1 = ...) в этой строке кода, и вы увидите, что оригиналar1 на самом деле не изменился. Если вы не хотите делать копию, вам понадобится push. Не верьте мне, верьте документы: «Метод concat () возвращает новый массив» Первое предложение в документации для concat.

Stijn de Witt 03.04.2016 16:26

@StijndeWitt Ты прав. Но с другой стороны, .push хорошо работает только при добавлении отдельных переменных / объектов, но, тем не менее, он испортит, когда дело доходит до добавления массивов, что в любом случае ar2 выше. Результатом .push в сценарии будет = [ar1, [ar2]]. .concat решает эту проблему, но с жертвой скорости и создания нового массива. Чтобы правильно использовать .push в добавлении массива, сначала зациклите содержащийся элемент и нажмите каждый. ar2.forEach(each => { ar1.push(each); });

Ade 07.04.2018 21:29

Чтобы добавить полный массив с push, используйте Function.prototype.apply, что позволяет нам указывать параметры функции как один массив. Это работает, потому что push принимает переменное количество аргументов и проталкивает все переданные аргументы. На самом деле Array - это очень умный объект с парой очень универсальных методов. Попробуйте: var array = ['look', 'an', 'array']; var result = []; result.push.apply(result, array); console.info(result);

Stijn de Witt 12.04.2018 01:09
ar1.push(...ar2) добавит все элементы из второго массива к первому без создания нового массива или вызова любого цикла for.
Nicholas Shanks 05.05.2020 15:49

Некоторые быстрые тесты (каждый тест = 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;
    }
}

Вопрос в том, является ли .length сохраненным значением или вычисляется при доступе, поскольку, если последнее истинно, возможно, использование простой переменной (например, j) в качестве значения индекса может быть еще быстрее

yoel halb 15.08.2012 22:55

Хотелось бы увидеть concat () в том же тесте!

Justin 30.04.2013 04:10

Интересно, насколько это изменилось за последние четыре года. (jsperf сейчас пригодится.)

Paul Draper 27.05.2014 00:07

Этот тип тестирования интересен, но, по иронии судьбы, не очень помогает в ускорении работы приложений. Цикл рендеринга намного дороже во время любого цикла. Кроме того, эти внутренние компоненты языка JS постоянно оптимизируются разработчиками браузеров. Это причина моего отрицательного голоса, а не интересность этого ответа. Если вам нужны более быстрые приложения, сначала выполните сравнительный анализ и посмотрите, что нужно изменить - в 99 случаях из 100 это не будет проблемой, как показывает этот тест. Часто его плохой разработчик JS / CSS, а не внутренности браузера, которые делают его медленным.

LessQuesar 26.09.2014 01:59

Для удобства других я создал jsperf с тестами @ JensRoland: jsperf.com/pushetc добавьте свои собственные сравнения и обновите его.

Henrik Aronsson 17.06.2015 16:30

Я согласен с LessQuesar в том, чтобы по возможности придерживаться встроенных функций. Не то чтобы микрооптимизация сама по себе вредна, но он прав в том, что браузеры всегда улучшают скорость своего движка. Показательный пример: на момент написания этой статьи производительность каждого браузера практически идентична для всех перечисленных выше методов. Это означало, что несколько лет назад было много суеты из-за такой небольшой выгоды, а сейчас нет никакой выгоды.

Beejor 13.08.2015 03:35

О, и Chrome работает быстро только потому, что он форсирует свой приоритет, в случаях ускорения цикла прерывания, чтобы обеспечить его скорость, и открытия большого количества процессов.

wizzwizz4 07.04.2016 12:26

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

arr.push(val);

Например.

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

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

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

Если вам известен наивысший индекс (например, хранящийся в переменной "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] (как некоторые люди в Интернете предлагают на основании конца, что, как только i станет больше, чем наивысший индекс, он вернет undefined, который оценивается как ложный)

Вы на самом деле не имеете в виду "undefined". Он должен читать void 0! "undefined" - это строка, а "undefined" !== void 0, поэтому ваш if (myArray[i] является ложным, если массив с индексом i не установлен на строку с содержимым, эквивалентным 'u'+'n'+'d'+'e'+'f'+'i'+'n'+'e'+'d'. Также обратите внимание, что вам не следует использовать undefined, вместо этого используйте void 0. Поскольку void 0 всегда является неопределенным значением, тогда как undefined можно определить через что-то вроде function x(undefined) { alert(undefined) } x("hello world"), поэтому вы не можете быть уверены, что кто-то случайно установил window["undefined"]=1 или подобное.

Tino 01.12.2019 16:30

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

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

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

var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.info(arr);

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

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

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

arr.push(...['fourth', 'fifth']);
console.info(arr) ;

лучший ответ для добавления массива элементов без создания нового массива.

Gabriel Littman 20.08.2014 22:45

@GabrielLittman Специально потому, что добавление к массиву, IMHO, должно изменять массив, а не создавать новый.

Juan Mendes 22.08.2014 05:44

Мне нравится версия push.apply, но я бы предпочел использовать Array.prototype.push.apply().

Michael 17.02.2015 02:41

Иногда важно сохранить ссылку на массив - например, в AngularJs, когда массив находится в области видимости на каком-то контроллере и какой-то службе необходимо обновить данные в массиве для отображения. Вот почему я поддерживаю это решение.

see sharper 15.03.2016 07:14

Вы можете использовать функции push и apply для добавления двух массивов.

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

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

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

Это то, что мне нужно, сохранить исходную ссылку на массив

amit bakle 12.02.2016 13:15

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

Mieszko 05.10.2018 12:54

В этой ситуации я бы использовал array1.concat(array2). Звонок в push кажется ненужным.

connectyourcharger 03.05.2019 03:10

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

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

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

var c = a.concat(b);

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

a.push('g');

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

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

myarray.length возвращает количество строк в массиве. JS основан на нуле, поэтому ключом следующего элемента массива будет текущая длина массива. БЫВШИЙ:

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

Метод 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

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

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

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

Пример Babel REPL

Just want to add a snippet for non-destructive addition of an element.

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

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

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

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

b = b.concat(a);

alert(b[2][1]); // result 2

Javascript со стандартом ECMAScript 5, который сейчас поддерживается большинством браузеров, вы можете использовать apply() для добавления array1 к array2.

var array1 = [3, 4, 5];
var array2 = [1, 2];

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

console.info(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.info(array2); // [1, 2, 3, 4, 5]

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

Бонусный балл

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

ES5var combinedArray = array1.concat(array2);

ES6const combinedArray = [...array1, ...array2]

Оператор распространения (...) предназначен для распределения всех элементов из коллекции.

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

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

arr=['a','b','c'];
arr.push('d');
//now print the array in console.info and it will contain 'a','b','c','d' as elements.
console.info(array);

если вы хотите объединить 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]

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

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

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

arr.push(...arr2);

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

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

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

Выход:

[1, 2, 3, 4, 5]

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

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

Выход:

[4, 5, 1, 2, 3]

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

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

Выход:

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

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

var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.info( 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.info(myFish);

Выход:

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

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

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

Выход:

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

Для 1) это говорит «без изменения исходного массива». Но это буквально то, что делает push: он изменяет исходный массив, вставляя в него новые элементы. Я неправильно это читаю, или это нужно отредактировать?

Phil Calvin 24.05.2017 18:17

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

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

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

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

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

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

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

вы можете сделать это с помощью новой функции 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.info(arr); 

// final output  [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]

Это не добавляет значение в массив, о чем просил OP. Это создает новый массив с содержимым старого массива и новыми элементами. На самом деле это Array.concat.

Richard Matheson 19.09.2018 13:03

Вы можете использовать метод 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.info(arr.append(arr1));// [7, 4, 7, 8, 1, 4, 5, 67, 7]
console.info(arr.append("Hola"))//[1, 2, 5, 67, 7, 4, 7, 8, "H", "o", "l", "a"]

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

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

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

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

Или просто:

[...arr, val] // [1, 2, 3, 4]

Исправьте с помощью ES6 для оператора отдыха.

monikapatelIT 08.06.2018 00:49

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

или массив:

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

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

Originally posted at

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

//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';

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

//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

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

//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')?

Mihail Malostanidis 12.08.2018 19:12

В push () он вставляет элемент последним, но в моем примере он вставляет элемент посередине, то есть из индекса массива 1 (как в примере) @Mihail Malostanidis

Srikrushna 12.08.2018 20:27

О, я думал, предположение было, что arrName имеет длину 1.

Mihail Malostanidis 12.08.2018 23:05

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

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.info(fruits[i]);
}

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

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

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

Другие вопросы по теме