Добавить массив в другой массив в JavaScript [дубликат]


этот вопрос точный дубликат:
как добавить массив к существующему массиву JavaScript?

Как вы добавляете массив к другому массиву в JavaScript?

другие способы, которыми человек может сформулировать этот вопрос:

  • добавить массив в другой
  • Конкат / конкатенация массивов
  • расширить массив с другим массивом
  • поставить содержимое одного массива в другой массив

Я потратил некоторое время на поиски ответа на этот вопрос. Иногда самые простые из них, как эти, труднее всего найти ответы, поэтому я добавляю вопрос здесь, Надеюсь, с большим количеством ключевых слов и фраз в соответствии с этим блоге. Пожалуйста, не стесняйтесь отвечать на этот вопрос с любой другой полезной информацией или редактировать ключевые слова и фразы ниже.

1 88

1 ответ:

если вы хотите изменить исходный массив, а не возвращает новый массив, используйте .push()...

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

я .apply толкать отдельные члены массивов 2 и 3 сразу.

или...

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);