javascript
java数组复制用for_在JavaScript中复制数组的最快方法 - 切片与'for'循环
這取決于陣列的長度 . 如果數(shù)組長度<= 1,000,000, slice 和 concat 方法大約需要相同的時間 . 但是當(dāng)你給出更廣泛的范圍時, concat 方法獲勝 .
例如,嘗試以下代碼:
var original_array = [];
for(var i = 0; i < 10000000; i ++) {
original_array.push( Math.floor(Math.random() * 1000000 + 1));
}
function a1() {
var dup = [];
var start = Date.now();
dup = original_array.slice();
var end = Date.now();
console.log('slice method takes ' + (end - start) + ' ms');
}
function a2() {
var dup = [];
var start = Date.now();
dup = original_array.concat([]);
var end = Date.now();
console.log('concat method takes ' + (end - start) + ' ms');
}
function a3() {
var dup = [];
var start = Date.now();
for(var i = 0; i < original_array.length; i ++) {
dup.push(original_array[i]);
}
var end = Date.now();
console.log('for loop with push method takes ' + (end - start) + ' ms');
}
function a4() {
var dup = [];
var start = Date.now();
for(var i = 0; i < original_array.length; i ++) {
dup[i] = original_array[i];
}
var end = Date.now();
console.log('for loop with = method takes ' + (end - start) + ' ms');
}
function a5() {
var dup = new Array(original_array.length)
var start = Date.now();
for(var i = 0; i < original_array.length; i ++) {
dup.push(original_array[i]);
}
var end = Date.now();
console.log('for loop with = method and array constructor takes ' + (end - start) + ' ms');
}
a1();
a2();
a3();
a4();
a5();
如果將original_array的長度設(shè)置為1,000,000,則 slice 方法和 concat 方法將花費大致相同的時間(3-4 ms,具體取決于隨機數(shù)) .
如果將original_array的長度設(shè)置為10,000,000,則 slice 方法需要超過60 ms, concat 方法需要超過20 ms .
總結(jié)
以上是生活随笔為你收集整理的java数组复制用for_在JavaScript中复制数组的最快方法 - 切片与'for'循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php动态获取函数参数
- 下一篇: 浅谈面向对象的javascript几个特