如何在 JavaScript 中合并两个数组?

String.prototype.concat()

String.prototype.concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。

const a = [1, 2, 3]
const b = [4, 5, 6]

const merged = [].concat(a, b) // [1, 2, 3, 4, 5, 6]
// 或
const alsoMerged = a.concat(b) // [1, 2, 3, 4, 5, 6]

这两种方法都会产生新的数组,而不会改变原数组。

扩展运算符

const a = [1, 2, 3]
const b = [4, 5, 6]

const merged = [...a, ...b] // [1, 2, 3, 4, 5, 6]

两者的比较

String.prototype.concat() 可以比展开运算符更好地处理非数组值,这可能是在合并不确定是否为数组的值时需要考虑的问题:

const a = [1, 2, 3]
const b = true
const c = 'Hello'

const mergeAb = [...a, ...b] // Error:b 不可迭代
const mergeAc = [...a, ...c] // [1, 2, 3, 'h', 'i'] 错误的结果
// 你应该改用 [...a, b] 和 [...a, c]

const concatAb = [].concat(a, b) // [1, 2, 3, true]
const concatAb = [].concat(a, c) // [1, 2, 3, 'Hello']

如上面所看到的,当传递不可迭代对象时,展开运算符要么抛出错误,要么不输出正确的结果。而 String.prototype.concat 则不会出现这样的问题。

该如何选择?

只要知道输入是数组,就使用展开运算符(...),因为它的性能更好,而且易于阅读和理解。

当您对一个或多个输入不确定且不想添加额外的检查时,请使用 String.prototype.concat(),因为它可以更优雅地处理这些情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值