Нажимать несколько элементов в массив
Я пытаюсь нажать несколько элементов как один массив, но получить ошибку
> 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/