jQuery.merge()和JavaScript本机函数concat()有什么区别?

tma*_*ter 9 javascript jquery

我想将两个数组连接成一个.我发现两个功能可以完成这项工作; 一个是jQuery.merge(),另一个是JavaScript内置函数concat().他们似乎做了同样的事情,我发现了这一点.它说:"Merge创建了一个更小的足迹,因为它循环遍历原始数组并添加新项目.Concat是一个内置的Javascript函数,应该更快,但占用空间更大." 我不确定这个陈述是否属实,还有其他差异吗?

nyc*_*nik 10

这个引用是正确的,两个函数实际上并没有做同样的事情,一个将两个数组合并到一个(第一个参数),第二个从两个数组合建一个新数组.

它所指的"足迹"是任何时候都将使用的最大内存量.由于merge,只是复制第二个数组,它应该使用更少的内存,因为在任何时候,它只需要在内存中有2个数组.

内置函数需要有3个数组,新数组必须是连接的两个数组的大小.

假设数组A和B中有1000个元素,合并后的数组为C:

  • 合并需要1000 + 1000 [a-> c],1000 [b]或3000个点.
  • Concat需要1000 + 1000 [c]和1000 [a]以及1000 [b]或4000个点.

如果使用大量内存,可以更快地减少内存,减少移动也可以更快.

我发现了一些测试