Сложение массивов в JavaScript — это простая, но интересная тема, которая может привести к неожиданным результатам. Рассмотрим сценарий, в котором несколько массивов передаются в функцию в качестве аргументов, и затем возвращается их сумма.
Вот как выглядит код:
function add(a, b, c) {
return a + b + c;
}
let sum = add([1, 2], [3, 4], [5, 6]);
console.log(sum);
Какой результат будет выведен в консоль?
Функция add
выглядит довольно простой: она принимает три аргумента и возвращает их сумму. В нашем примере в качестве аргументов передаются три массива. Логично предположить, что результатом сложения будет новый массив, содержащий все элементы переданных массивов. Однако ответ будет совсем другим.
Понимание преобразования типов в JavaScript
Когда в JavaScript используются операции сложения (+
), происходит преобразование типов данных. Если один из операндов является строкой, JavaScript преобразует другие операнды в строки и выполняет конкатенацию (объединение) этих строк.
Применяя это правило к нашему примеру:
let sum = [1, 2] + [3, 4] + [5, 6];
Каждый массив преобразуется в строку, где элементы разделены запятыми:
let sum = "1,2" + "3,4" + "5,6";
Затем происходит конкатенация этих строк:
let sum = "1,23,45,6";
Таким образом, результатом сложения массивов будет строка "1,23,45,6"
, а не новый массив.
Итоговый результат
Когда функция выполняется и результат выводится в консоль с помощью console.log
, мы увидим следующую строку:
1,23,45,6
Выводы
Этот пример подчеркивает важность понимания правил преобразования типов в JavaScript. Если вы ожидаете сложение массивов как математическую операцию, это может привести к неожиданным результатам. В JavaScript, для объединения массивов следует использовать методы, такие как concat()
или оператор расширения (...
).
Вот как можно достичь ожидаемого результата — объединения массивов:
function add(a, b, c) {
return a.concat(b, c);
}
let sum = add([1, 2], [3, 4], [5, 6]);
console.log(sum); // [1, 2, 3, 4, 5, 6]
Либо с использованием оператора расширения:
function add(...arrays) {
return [].concat(...arrays);
}
let sum = add([1, 2], [3, 4], [5, 6]);
console.log(sum); // [1, 2, 3, 4, 5, 6]
Использование этих методов гарантирует, что вы получите новый массив, состоящий из элементов всех переданных массивов.