413

複数の要素を 1 つの配列としてプッシュしようとしていますが、エラーが発生します。

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

私はRubyで行うのと同様のことをしようとしていapplyます*.

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

12 に答える 12

775

次の方法で、複数の要素を配列にプッシュできます

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

console.log(a);

于 2013-02-06T07:40:20.727 に答える
595

ECMAScript2015 (別名 ES6) では、スプレッド演算子を使用して一度に複数のアイテムを追加できます。

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

Kangax の ES6 互換性テーブルを参照して、互換性のあるブラウザーを確認してください。

于 2016-02-03T02:57:03.427 に答える
304

applyまたはでオブジェクトのほとんどの関数を使用する場合callcontextパラメータは作業中のオブジェクトでなければなりません。

この場合、必要ですa.push.apply(a, [1,2])(または、より正確にはArray.prototype.push.apply(a, [1,2])

于 2013-02-06T07:41:14.063 に答える
84

使用できますArray.concat

var result = a.concat(b);
于 2013-02-06T07:37:28.183 に答える
1

一度に複数のオブジェクトをプッシュすることは、多くの場合、 をどのように宣言しているかによって異なりますarray

これが私がした方法です

//declaration
productList= [] as  any;

push記録する

this.productList.push(obj.lenght, obj2.lenght, items);
于 2020-07-31T07:04:47.057 に答える
1

私も同じ疑問を持っていましたが、私の場合、より簡単な解決策がうまくいきました:

let array = []
array.push(1, 2, 4, "string", new Object())
console.log(array)
// logs [ 1, 2, 4, 'string', {} ]
于 2022-01-16T06:12:27.753 に答える
-1

ES6スプレッド演算子を使用してください:

let a = [1,2,3];
let b = [4,5,6];
a = [...a,...b];
// [1,2,3,4,5,6]
于 2021-10-09T12:45:05.543 に答える
-2
var a=[];
a.push({
 name_a:"abc",
 b:[]
});

a.b.push({
  name_b:"xyz"
});
于 2017-03-20T12:31:51.073 に答える