Нажимать несколько элементов в массив

Я пытаюсь нажать несколько элементов как один массив, но получить ошибку

> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined

Я пытаюсь сделать аналогичные вещи, которые я сделал бы в рубине, я думал, что apply это что-то вроде *.

>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]

Ответ 1

При использовании большинства функций объектов с apply или call параметр context ДОЛЖЕН быть объектом, над которым вы работаете.

В этом случае вам нужно a.push.apply(a, [1,2]) (или более правильно Array.prototype.push.apply(a, [1,2]))

Ответ 2

Вы можете вставить несколько элементов в массив следующим образом

var a = [];
    
a.push(1, 2, 3);

console.log(a);

Ответ 3

Теперь в ECMAScript2015 (a.k.a. ES6) вы можете использовать оператор распространения для добавления сразу нескольких элементов:

var arr = [1];
var newItems = [2, 3];
arr.push(...newItems);
console.log(arr);

Ответ 4

Вы можете использовать Array.concat:

var result = a.concat(b);

Ответ 5

Если вам нужна альтернатива Array.concat в ECMAScript 2015 (он же ES6, ES2015), который, как и он, не изменяет массив, но возвращает новый массив, вы можете использовать оператор распространения, например, так:

var arr = [1];
var newItems = [2, 3];
var newerItems = [4, 5];
var newArr = [...arr, ...newItems, ...newerItems];
console.log(newArr);

Ответ 6

В ES6 вы можете использовать оператор с расширением

const arr = []
arr.push(
    ...[
        item1,
        item2,
        item3,
    ]
)

Ответ 7

Есть много ответов, которые рекомендуется использовать: Array.prototype.push(a, b). Это хороший способ, НО, если у вас будет действительно большое b, у вас будет ошибка (из-за слишком большого количества аргументов). Будьте осторожны здесь.

См. Каков наиболее эффективный способ объединения N массивов? Больше подробностей.

Ответ 8

var a=[];
a.push({
 name_a:"abc",
 b:[]
});

a.b.push({
  name_b:"xyz"
});

Ответ 9

var arr = [1];
var newItems = [2, 3];
arr.push(newItems[1]);
console.log(arr);

Ответ 10

Использовать функцию слияния jQuery. Это очень удобно $.merge(oldArray, NewElements); В oldArray будут добавлены элементы, которые вы указали.
Для получения дополнительной информации см.

http://api.jquery.com/jQuery.merge/