这是一篇简单的文章,关于JavaScript数组使用的一些技巧。我们将使用不同的方法结合/合并两个JS数组,以及讨论每个方法的优点/缺点。
让我们先考虑下面这情况:
concat(..)
这是最常见的做法:
正如你所看到的,C是一个全新的数组,表示a和b两个数组的组合,并让A和B不变。简单吧?
但如果a有10,000个元素,而b也有一万个元素? C就会有2万个元素,所以a和b的内内存使用就会翻倍。
“没问题!”,你说。让它们被垃圾回收,把A和B设置为null,问题解决了!
循环插入
好吧,让我们将一个数组的内容复制到另一个,使用: Array#push(..)
似乎有更好的内存占用。
但如果a数组比较小?出于内存和速度的原因,你可能要把更小的a放到b的前面,。没问题,只需将push(..)换成unshift(..)即可:
功能技巧
不过for循环确实比较丑,而且不好维护。我们可以做的更好吗?
这是我们的第一次尝试,使用Array#reduce:
a; // [1,2,3,4,5,6,7,8,9,\"foo\",\"bar\",\"baz\",\"bam\",\"bun\",\"fun\"]
// or `a` into `b`:
b = a.reduceRight( function(coll,item){
coll.unshift( item );
return coll;
}, b );
b; // [1,2,3,4,5,6,7,8,9,\"foo\",\"bar\",\"baz\",\"bam\",\"bun\",\"fun\"]
本文地址:https://www.stayed.cn/item/20223
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我