Добавить массив в другой массив в JavaScript [дубликат]
этот вопрос точный дубликат:
как добавить массив к существующему массиву JavaScript?
Как вы добавляете массив к другому массиву в JavaScript?
другие способы, которыми человек может сформулировать этот вопрос:
- добавить массив в другой
- Конкат / конкатенация массивов
- расширить массив с другим массивом
- поставить содержимое одного массива в другой массив
Я потратил некоторое время на поиски ответа на этот вопрос. Иногда самые простые из них, как эти, труднее всего найти ответы, поэтому я добавляю вопрос здесь, Надеюсь, с большим количеством ключевых слов и фраз в соответствии с этим блоге. Пожалуйста, не стесняйтесь отвечать на этот вопрос с любой другой полезной информацией или редактировать ключевые слова и фразы ниже.
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);