java数组复制用for_在JavaScript中复制数组的最快方法 - 切片与'for'循环

这取决于阵列的长度 . 如果数组长度<= 1,000,000, slice 和 concat 方法大约需要相同的时间 . 但是当你给出更广泛的范围时, 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的长度设置为1,000,000,则 slice 方法和 concat 方法将花费大致相同的时间(3-4 ms,具体取决于随机数) .

如果将original_array的长度设置为10,000,000,则 slice 方法需要超过60 ms, concat 方法需要超过20 ms .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值