JavaScript数组复制,concat和slice哪个更好?

16

有两种不同的方法可以复制一个数组,使用Array.concat或Array.slice,

例如:

var a = [1, 2, 3],

    c1 = [].concat(a),

    c2 = a.slice(0);

哪种方式更好?


1
什么是更好的意思? - Esailija
arr.slice()可能更快,只需进行基准测试。http://jsperf.com/duplicate-array-slice-vs-concat/3 - AllTooSir
检查这个:http://jsperf.com/duplicate-array-slice-vs-concat/3 切片更快。 - Satpal
根据我所读的,slice 更快。 - Andrei Neculai
@Esailija 你会使用哪种方式,为什么? - caiwf
2
c3 = a.concat()是怎么样的呢? - Doin
2个回答

14

为了清晰起见,您应该使用在文档中记录的方法来复制数组(或其部分):

var c2 = a.slice(0);

在任何一个好的浏览器上,性能差异都将是可以忽略不计的,因此清晰度应该是决定因素。


文档在哪里记录? - ericsoco
@ericsoco https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice - “slice() 方法返回一个新的数组对象,这一对象是从 beginend(不包括 end)的原数组的浅拷贝。原始数组不会被修改。” - Alnitak

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接