往一个数组中添加另外另外一个数组中的元素,两种方式比较(拼接和push)
jQuery里面有一段源码:
Array.prototype.push.apply(someArray, otherArray);这个做法依赖两点:
someArray = someArray.concat(otherArray)而我之前一直纠结于此方法会产生一个额外的数组变量,而且第一个数组长度越大性能开销就越大(需要复制引用),看到jQuery中的这段源码便很是欢喜,打算换掉之前插件中的这种处理方式。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html> <head> <script type="text/javascript"> var rightArray = []; window.onload = function() { for (var i = 0; i < 1000000; i++) { rightArray.push(i); } }; function doPush() { var array = []; var before = new Date().getTime(); Array.prototype.push.apply(array, rightArray) var after = new Date().getTime(); document.getElementById("result").innerHTML = (after - before); } function doConcat() { var array = []; var before = new Date().getTime(); array = array.concat(rightArray); var after = new Date().getTime(); document.getElementById("result").innerHTML = (after - before); } </script> </head> <body> <span id="result"></span> <input type="button" value="pushAll" onclick="doPush();" /> <input type="button" value="concat" onclick="doConcat();" /> </body></html>实验结果: