web-dev-qa-db-ja.com

JavaScriptで別の配列に配列を追加します

この質問は次のものとまったく同じです:
既存のJavaScript配列に配列を追加する方法

JavaScriptで別の配列に配列を追加するにはどうすればよいですか?

人がこの質問に答える他の方法:

  • 配列を別の配列に追加します
  • 配列の連結/連結
  • 配列を別の配列で拡張する
  • ある配列の内容を別の配列に入れます

私はこの質問に対する答えを探すのにしばらく時間を費やしました。時々、これらのような最も単純なものは答えを見つけるのが最も難しいので、ここに質問を追加します。うまくいけば、この ブログ投稿 のようにキーワードとフレーズがたくさんあります。他の役立つ情報でこの質問に回答するか、以下のキーワードやフレーズを編集してください。

94
Chris Dutrow

新しい配列を返す代わりに元の配列を変更する場合は、.Push()...を使用します.

array1.Push.apply(array1, array2);
array1.Push.apply(array1, array3);

.applyを使用して、配列の個々のメンバー23を一度にプッシュしました。

または...

array1.Push.apply(array1, array2.concat(array3));

大きな配列を処理するには、これをバッチで実行できます。

for (var n = 0, to_add = array2.concat(array3); n < to_add.length; n+=300) {
    array1.Push.apply(array1, to_add.slice(n, n+300));
}

これを頻繁に行う場合は、それを処理するメソッドまたは関数を作成します。

var Push_apply = Function.apply.bind([].Push);
var slice_call = Function.call.bind([].slice);

Object.defineProperty(Array.prototype, "pushArrayMembers", {
    value: function() {
        for (var i = 0; i < arguments.length; i++) {
            var to_add = arguments[i];
            for (var n = 0; n < to_add.length; n+=300) {
                Push_apply(this, slice_call(to_add, n, n+300));
            }
        }
    }
});

次のように使用します:

array1.pushArrayMembers(array2, array3);
var Push_apply = Function.apply.bind([].Push);
var slice_call = Function.call.bind([].slice);

Object.defineProperty(Array.prototype, "pushArrayMembers", {
    value: function() {
        for (var i = 0; i < arguments.length; i++) {
            var to_add = arguments[i];
            for (var n = 0; n < to_add.length; n+=300) {
                Push_apply(this, slice_call(to_add, n, n+300));
            }
        }
    }
});

var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
var array3 = ['g','h','i'];

array1.pushArrayMembers(array2, array3);

document.body.textContent = JSON.stringify(array1, null, 4);
129
user1106925