- concat
- Отправить комментарий
- Учебник javascript
- Основные элементы языка
- Сундучок с инструментами
- Интерфейсы
- Все об AJAX
- Оптимизация
- Разное
- Как объединить массивы в JavaScript
- Способ 1 — объединение массивов через оператор spread
- Способ 2 — объединение массивов методом array.concat()
- Способ 3 — объединение массивов через метод array.push()
- Сергей Мочалов
- Array.prototype.concat()
- Интерактивный пример
- Синтаксис
- Параметры
- Возвращаемое значение
- Описание
- Примеры
- Соединение двух массивов
- Соединение трёх массивов
- Соединение значений в массив
- Спецификации
- Совместимость с браузерами
- Смотрите также
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
concat
Копирует в него текущий объект array и значения value1, value2, .
При этом, если значение является массивом, то в результат попадут его элементы (в отличие от push), а не сам аргумент.
Метод concat ничего не меняет. Вместо этого он просто возвращает комбинацию «в один уровень глубиной» текущего объекта и аргументов.
Элементы аргументов-массивов добавляются в результат следующим образом:
Объекты Копируется ссылка на объект. Таким образом, старый и новый массив ссылаются на один и тот же объект. Если объект меняется — эти изменения видны и в новом и в старом массивах. Элементарные значения Копируются «как есть»
var alpha = ["a", "b", "c"]; var numeric = [1, 2, 3]; // создает массив ["a", "b", "c", 1, 2, 3]; var alphaNumeric = alpha.concat(numeric);
var num1 = [1, 2, 3]; var num2 = [4, 5, 6]; var num3 = [7, 8, 9]; // создает массив [1, 2, 3, 4, 5, 6, 7, 8, 9]; var nums = num1.concat(num2, num3);
var alpha = ['a', 'b', 'c']; // создает массив ["a", "b", "c", 1, 2, 3] var alphaNumeric = alpha.concat(1, [2, 3]);
«Объекты
Копируется ссылка на объект. Таким образом, старый и новый массив ссылаются на один и тот же объект. Если объект меняется — эти изменения видны и в новом и в старом массивах.»
var MyArr= new Array(1,2,3,4,5,6); var NewArr= new Array(6,5,4,3,2,1); var Result=MyArr.concat(NewArr); alert(Result); MyArr[0]=0; alert(Result);
почему же значение не меняется?
var Result=MyArr.concat(NewArr);
присваивается не ссылка на MyArr, а создается новый массив, ссылка на который записывается в Result.
если не понял, замени MyArr[0]=0 на Result[0]=0
Потому что в массиве у тебя не объекты, а элементарные значения. Чтобы значение менялось, нужно создавать объект, например, Number(6), и менять уже его.
если объединение двух массивов — массив, то с ним можно работать, как с массивом. Тогда почему не работает код:
array1= new Array («Первый», «Второй», «Третий»);
аrray2 = new Array («Один», «Два», «Три») ;
document.write (array1.concat(array2).join ())
вопрос снят. Найдена ошибка в коде (у переменной array2 при объявлении первая буква русская). Спасибо Firebug)
В реализации concat под Google Chrome есть замечательный bug который google упорно не хочет исправлять.
var a1 = []; a1.length=2;
alert( [].concat(0, 1, a1, 0.3, 5, 6) );
alert( [].concat(0, 1, a1, 3, 5, 6) );
если один из аргументов, в данном случае 0.3, меньше 1, то конец списка обрезается. Во втором alert всегда показываются все элементы.
Все остальные проверенные браузеры ведут себя корректно.
а как написать функцию которая объединяла бы массивы и потом вызвать ее?
Спасибо
Кому нужно, чтобы новый массив не возвращался, а записывался в исходный, то вот аналог:
var a = ['a', 'b']; var b = ['b', 'c']; [].push.apply(a, b); alert(a);
«Но будьте осторожны: при использовании метода apply() таким образом вы рискуете выйти за пределы ограничения на количество аргументов в движке JavaScript. Последствия применения функции с очень большим количеством аргументов (думается, больше десяти тысяч аргументов) различаются от движка к движку (JavaScriptCore имеет жёстко зашитое ограничение на количество аргументов в 65536), поскольку этот предел (на самом деле, это природа поведения любого чрезвычайно огромного стека) не определён. Некоторые движки будут выкидывать исключение. Хуже того, другие просто отбрасывают реально переданные функции аргументы сверх лимита.»
Отправить комментарий
- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
Для остальных вопросов и обсуждений есть форум.
Учебник javascript
Основные элементы языка
Сундучок с инструментами
Интерфейсы
Все об AJAX
Оптимизация
Разное
- Асинхронное программирование
- Google Gears в деталях
- Javascript Flash мост
- Букмарклеты и правила их написания
- О подборке книг на сайте
- Почему — плохо
- Способы идентификации в интернете
- Уровни DOM
- Что почитать?
- Шаблонизация с javascript
- Юнит-тесты уровня браузера на связке Selenium + PHP.
- Справочники: Javascript/HTML/CSS
- Система сборки и зависимостей Google Closure Library
- Хранение данных на клиенте. DOM Storage и его аналоги.
- 10 лучших функций на JavaScript
- ล็อตเว็บตรง pg นี้นำเสนอการออกแบบ
4 часа 23 минуты назад - play online games Play and get real.
4 часа 24 минуты назад - easyslot.
5 часов 6 минут назад - Is one of the online gambling games.
12 часов 5 минут назад - Is one of the online gambling games.
12 часов 6 минут назад - It’s really exceptional. I enjoy the.
12 часов 24 минуты назад - This article is great as well as.
12 часов 32 минуты назад - thanks due to the fact you have been.
13 часов 27 минут назад - Silahkan main disini bosku, mantap.
13 часов 28 минут назад - Experience the thrill of being a.
13 часов 56 минут назад
Как объединить массивы в JavaScript
Массивы по своей сути это структура данных, представляющая упорядоченную коллекцию индексированных элементов.
И довольно часто в практике возникает необходимость объединения массивов — когда два и более отдельных массивов превращаются в большой массив содержащий все элементы первоначальных массивов.
Например объединение массива [1,2] и [5,6] приведет к появлению массива [1,2,5,6]
Мы рассмотрим три способа объединить массивы в JavaScript: 2 иммутабельных (новый массив создается после объединения)
Способ 1 — объединение массивов через оператор spread
Если вам нужен один хороший способ объединения массивов в JavaScript, тогда оператор spread — ваш выбор.
Напишите внутри массива две или более переменных с префиксом в виде spread оператора . и JavaScript объединит их в один новый массив. Собственно синтаксис:
const result = [. array1, . array2];
Как пример предположим у нас есть два массива содержащих фамилии студентов students1 и students2
const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; const all = [. students1, . students2]; all; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина']
const all = [. students1, . students2] создает новый массив содержащий элементы исходных массивов students1 и students2
Порядок в котором вы перечисляете массивы при помощи оператора spread имеет значение! Элементы массива вставляются в том порядке в котором идут переменные этих массивов.
В нашем примере поменяем порядок:
const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; const all = [. students2, . students1]; all; // ['Петров', 'Курочкина', 'Иванов', 'Сидоров']
Spread оператор позволяет объединять 2 и более массивов:
const newArray = [. array1, . array2, . array3, . arrayN];
Способ 2 — объединение массивов методом array.concat()
Если вы предпочитаете функциональные методы объединения массивов, то можете использовать array1.concat(array2) метод:
const newArray = array1.concat(array2);
const newArray = [].concat(array1, array2);
array.concat() не изменяет исходные массивы, а формирует новый имеющий в составе элементы объединяемых массивов.
Давайте попробуем повторить пример из первого способа:
const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; const all_1 = students1.concat(students2); const all_2 = [].concat(students1,students2); all_1; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина'] all_2; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина']
Метод concat позволяет объединять более двух массивов:
const newArray = [].concat(array1, array2, array3, arrayN);
Способ 3 — объединение массивов через метод array.push()
Как мы видели ранее два предыдущих способа создают новый массив содержащий исходные, но иногда необходимо не создавать новый массив, а добавить один массив в другой. В этом случает один из исходных массивов будет изменен.
Вы наверняка знаете что метод array.push(item) добавляет к имеющемуся массиву новый элемент и ставит его в конец массива.
const students = ['Иванов']; students.push('Сидоров'); students; // ['Иванов', 'Сидоров']
Благодаря тому факту что array.push(item1, item2, . itemN) может принимать множественное количество элементов, мы можем запушить целый массив через оператор spread примененный к аргументу:
И если брать пример с нашими студентами то получим:
const students1 = ['Иванов', 'Сидоров']; const students2 = ['Петров', 'Курочкина']; students1.push(. students2); students1; // ['Иванов', 'Сидоров', 'Петров', 'Курочкина']
А какой из способов используете вы? Поделитесь в комментариях
Сергей Мочалов
Веб-разработчик. Создаю и поддерживаю сайты для клиентов с 2009 года
Array.prototype.concat()
Метод concat() возвращает новый массив, состоящий из массива, на котором он был вызван, соединённого с другими массивами и/или значениями, переданными в качестве аргументов.
Интерактивный пример
Синтаксис
var new_array = old_array.concat(value1[, value2[, . [, valueN]]])
Параметры
Массивы и/или значения, соединяемые в новый массив. Смотрите описание ниже.
Возвращаемое значение
Описание
Метод concat создаёт новый массив, состоящий из элементов в объекте, на котором он был вызван, за которыми по порядку следуют, для каждого аргумента, все его элементы (если аргумент является массивом), либо сам аргумент (если он массивом не является).
Метод concat не изменяет данный массив или любой из массивов, переданных в аргументах, а вместо этого возвращает поверхностную копию, содержащую копии тех элементов, что были объединены с исходными массивами. Элементы оригинальных массивов копируются в новый массив по следующим правилам:
- Ссылки на объекты (но не фактические объекты): метод concat копирует ссылки на объекты в новый массив. И оригинал, и новый массив ссылаются на один и тот же объект. То есть, если объект по ссылке будет изменён, изменения будут видны и в новом, и в исходном массивах.
- Строки, числа и булевы значения (но не объекты String , Number или Boolean ): метод concat копирует значения строк и чисел в новый массив.
Примечание: Соединение массивов и/или значений в новый массив оставит соединяемые массивы/значения неизменными. Кроме того, любая операция над новым массивом (если только элемент не является ссылкой) не будет затрагивать исходные массивы и наоборот.
Примеры
Соединение двух массивов
Следующий код соединяет два массива:
var alpha = ['a', 'b', 'c'], numeric = [1, 2, 3]; var alphaNumeric = alpha.concat(numeric); console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3]
Соединение трёх массивов
Следующий код соединяет три массива:
var num1 = [1, 2, 3], num2 = [4, 5, 6], num3 = [7, 8, 9]; var nums = num1.concat(num2, num3); console.log(nums); // Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Соединение значений в массив
Следующий код соединяет три значения в массив:
var alpha = ['a', 'b', 'c']; var alphaNumeric = alpha.concat(1, [2, 3]); console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3]
Спецификации
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- push / pop — добавление / удаление элементов с конца массива
- unshift / shift — добавление / удаление элементов с начала массива
- splice — добавление / удаление элементов в указанной позиции массива
- String.prototype.concat()
- Symbol.isConcatSpreadable — управление уменьшением размерности массива
Found a content problem with this page?
This page was last modified on 7 нояб. 2022 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.