Ответы:
Используйте Array.prototype.push
метод для добавления значений в массив:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(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.log(arr[i]);
}
Обновить
Если вы хотите добавить элементы одного массива в другой, вы можете использовать firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Обновить
Просто дополнение к этому ответу, если вы хотите добавить любое значение в начало массива, что означает первый индекс, то вы можете использовать Array.prototype.unshift
для этой цели.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Он также поддерживает добавление нескольких значений одновременно, как push
.
for
вообще (использовать .forEach
).
length
собственности. Переводчик сам делает потрясающую работу, и в Реальном Мире не будет никакого значения, оптимизируете ли вы его или нет. Если ваш массив становится настолько большим, что оптимизация .length
действительно может помочь, скорее всего, массив больше не является правильной структурой данных. Использование forEach
имеет свои преимущества, но весьма сомнительно, что одним из них будет увеличение производительности, поскольку вызов функции для каждой итерации требует затрат и ничего не экономит.
length
Свойство массива не вычисляется каждый раз, когда вы вызываете его, это переменная, хранящаяся в array
объекте, которая обновляется только при изменении массива. Так что на самом деле нет затрат на производительность, в том числе arr.length
в for
состоянии.
forEach
функции обратного вызова (некоторые из них, вероятно, уже это делают), и не будет никакой разницы в сгенерированном машинном коде, если функция вызывается достаточно часто, чтобы ее компилировали, а не интерпретировали с помощью время выполнения. Тот же совет, что и для любого языка, который не является ассемблером, на самом деле.
Если вы добавляете только одну переменную, то push()
работает просто отлично. Если вам нужно добавить другой массив, используйте concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
Concat не влияет ar1
и, ar2
если не переназначен, например:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Много большой информации здесь .
How do I append to an array in JavaScript?
, но на concat
самом деле создает в новый массив. Это важное отличие! Вместо этого я бы сказал, что ответ Omnimike, представленный ниже, на самом деле лучший: используйте Push.apply, чтобы поместить весь массив в существующий массив без создания нового.
ar1 = ar1.concat(ar2);
, к ar1
ar1
и добавление, ar2
а затем возвращает новый массив. Просто не указывайте часть присваивания ( ar1 = ...
) из этой строки кода, и вы увидите, что оригинал ar1
фактически не изменился. Если вы хотите избежать копирования, вам понадобится push
. Не верьте мне, верьте документам : «Метод concat () возвращает новый массив» Первое предложение в документах для concat
.
ar2
в любом случае выше. Результат по .push
сценарию будет = [ar1, [ar2]]
. .concat решает эту проблему, но жертвуя скоростью и создавая новый массив. Для .push
правильного использования при добавлении в массив сначала зациклите содержащийся элемент и нажмите каждый. ar2.forEach(each => { ar1.push(each); });
Некоторые быстрые сравнительные тесты (каждый тест = 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):
Мне нравится 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;
}
}
Я думаю, что стоит упомянуть, что push может вызываться с несколькими аргументами, которые будут добавляться в массив по порядку. Например:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
В результате вы можете использовать push.apply для добавления массива в другой массив следующим образом:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
Аннотированный ES5 имеет больше информации о том, что именно толчок и apply .
Обновление 2016 года: со спредом это вам больше не нужно apply
, например:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Array.prototype.push.apply()
.
Вы можете использовать push
и apply
функцию для добавления двух массивов.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Это добавится array2
к array1
. Сейчас array1
содержит [11, 32, 75, 99, 67, 34]
. Этот код намного проще, чем написание for
циклов для копирования каждого элемента массива.
...
оператор вместо применения const a1 = [] const a2 = [5,6,7] const.push(...a2)
редактирования: выделение синтаксиса
array1.concat(array2)
в этой ситуации. Призыв к push
кажется ненужным.
С новым оператором распространения ES6 объединение двух массивов push
становится еще проще:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Это добавляет содержимое arr2
в концеarr
.
Если arr
это массив, и val
значение, которое вы хотите добавить, используйте:
arr.push(val);
Например
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
Используйте concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);
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]
Оператор распространения ( ...
) - разложить все элементы из коллекции.
Если вы хотите добавить два массива -
var a = ['a', 'b'];
var b = ['c', 'd'];
тогда вы можете использовать:
var c = a.concat(b);
И если вы хотите добавить запись g
в array ( var a=[]
), вы можете использовать:
a.push('g');
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
Есть несколько способов добавить массив в 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) Вы можете использовать .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"]
push
делает: он изменяет исходный массив, помещая в него новые элементы. Я читаю это неправильно, или это должно быть отредактировано?
Теперь вы можете воспользоваться синтаксисом ES6 и просто сделать:
let array = [1, 2];
console.log([...array, 3]);
сохраняя исходный массив неизменным.
Если вы знаете самый высокий индекс (например, хранится в переменной «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"
. Это должно прочитать void 0
! "undefined"
является строкой и "undefined" !== void 0
, следовательно, ваше значение if(myArray[i]
false, если массив по индексу 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
или подобное.
Добавить единственный элемент
//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')
?
arrName
было длинным 1
.
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
Просто хочу добавить фрагмент для неразрушающего добавления элемента.
var newArr = oldArr.concat([newEl]);
Поскольку Array.prototype.push добавляет один или несколько элементов в конец массива и возвращает новую длину массива , иногда нам просто нужно получить новый обновленный массив, чтобы мы могли сделать что-то вроде этого:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
Или просто:
[...arr, val] // [1, 2, 3, 4]
Вы можете сделать это с помощью новой функции 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' ]
если вы хотите объединить 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]
Чтобы добавить отдельный элемент в массив, используйте push()
метод, предоставленный объектом Array:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()
мутирует исходный массив.
Чтобы создать новый массив, используйте concat()
метод Array:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
Обратите внимание, что на concat()
самом деле элемент не добавляется в массив, но создается новый массив, который вы можете назначить другой переменной или переназначить исходному массиву (объявив его как let
, поскольку вы не можете переназначить a 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)
Помните, что, как описано ранее, этот метод не изменяет исходный массив, но возвращает новый массив.
Первоначально опубликовано на
Если вы хотите добавить одно значение в массив, просто используйте метод 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);
У нас нет функции добавления для 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];
Они являются основными функциями для добавления или добавления новых значений в массивы.
Вы можете использовать метод 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"]
push()
добавляет новый элемент в конец массива.
pop()
удаляет элемент из конца массива.
Чтобы добавить объект (например, строку или число) в массив, используйте -
array.push(toAppend);
Вы можете использовать push (), если хотите добавить значения, например arr.push("Test1", "Test2");
Если у вас есть массив, вы можете использовать concat (), например Array1.concat(Array2)
Если у вас есть только один элемент, который вы можете добавить, вы также можете попробовать метод длины, например array[aray.length] = 'test';