You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动