gpt4 book ai didi

javascript - arr1.concat(arr2) 和 [].concat(arr1, arr2) 之间的区别

转载 作者:行者123 更新时间:2023-12-01 03:51:17 25 4
gpt4 key购买 nike

在 JavaScript 中,我遇到过以两种主要方式编写的代码,用于连接两个(或更多)使用 .concat() 的数组。 Array 上的方法目的。 (假设在下文中,arr1 和 arr2 是作为 .concat() 方法的参数给出的通用数组)。有时我会看到

arr1.concat(arr2)

而在其他地方,我看到使用以下内容:

[].concat(arr1, arr2)

在实践中,我没有发现这两种表达方式之间有任何明显的差异。两者都不会改变原始数组。两者都返回相同的输出。

有哪些差异(如果有)?其中一个比另一个性能更好吗?最佳实践是否有特别建议?

非常感谢您的所有帮助/反馈!

编辑

JSPerf欢呼基准测试。正如一些评论中指出的那样,与 [].concat(arr1, arr2)< 相比, arr1.concat(arr2) 似乎是首选(也是更自然的语法)。 (我认为这有点主观,但回想起来大多数人都会同意)。即便如此,选择前一种语法而不是后者还是有附加值的,除非是因为它所带来的性能略有提高。

最佳答案

实际上,使用[].concat(arr1, arr2),您默认设置结果必须是一个数组。您可以连接字符串和数组,或者仅连接字符串或仅连接数组 - 结果将始终是一个数组。

如果您希望结果为字符串 - 在开头使用空引号而不是空数组。

console.log([].concat([1,2,3], 'text'));
console.log([].concat('text', 'new'));
console.log(''.concat([1,2,3], [4,5,6]));

使用arr1.concat(arr2),第一个元素的类型(在本例中为arr1)将成为新创建对象的默认类型。因此,如果 arr1 是字符串,即使 arr2 是数组,结果也将是 string 类型。

console.log([1,2,3].concat('text'));
console.log('text'.concat([1,2,3]));

在这两种情况下 - 原始数组或字符串都没有被改变。

关于性能 - 它们之间没有显着差异。

关于javascript - arr1.concat(arr2) 和 [].concat(arr1, arr2) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com