JavaScript中使用+运算符合并数组为何得到字符串而非合并后的数组?
JavaScript中使用+运算符合并数组为何得到字符串而非合并后的数组?
嗨,这问题我当初刚学JavaScript的时候也踩过一模一样的坑!其实原因很简单:JavaScript里的+运算符对数组的处理逻辑并不是“合并数组”,而是先把数组转换成字符串,再执行字符串拼接操作。
举个例子,你写的代码大概是这样:
const arr1 = [1, 2, 3]; const arr2 = [4, 5]; const result = arr1 + arr2; console.log(result); // 输出 '1,2,34,5'
当你用+连接两个数组时,JS会自动调用每个数组的toString()方法,把[1,2,3]转成字符串"1,2,3",[4,5]转成"4,5",然后把这两个字符串拼在一起,就得到了"1,2,34,5"——这就是为什么结果是字符串而不是合并后的数组啦。
那该怎么正确合并数组呢?给你推荐几种常用的方法:
- 使用
concat()方法:这是数组的原生方法,会返回一个包含两个数组所有元素的新数组,不会修改原来的数组,非常安全。const mergedArr = arr1.concat(arr2); console.log(mergedArr); // 输出 [1, 2, 3, 4, 5] - 使用扩展运算符(
...):ES6之后推出的语法,写法更简洁直观,同样返回新数组,还能一次性合并多个数组。const mergedArr = [...arr1, ...arr2]; // 如果要合并多个数组:const mergedArr = [...arr1, ...arr2, ...arr3]; console.log(mergedArr); // 输出 [1, 2, 3, 4, 5] - 使用
push()方法(修改原数组):如果你不介意修改原来的数组,可以用push()配合扩展运算符,把arr2的元素直接加到arr1里。arr1.push(...arr2); console.log(arr1); // arr1现在变成了 [1, 2, 3, 4, 5]
内容来源于stack exchange




