js 陣列求和,多種方法,並比較效能

2022-07-20 10:45:10 字數 2724 閱讀 4200

可以借用下面12種方法對陣列求和,建立乙個長度為10w的陣列,進行測試

具體實現:

首先建立乙個龐大的陣列:

var aarr = ;

for(var i = 0;i < 1000000;i++))

console.log('every求和: '+_sum);

console.timeend('every求和時間');

//filter

var _sum = 0;

console.time('filter求和時間');

aarr.filter(

function

(item,index))

console.log('filter求和: '+_sum);

console.timeend('filter求和時間');

//map

var _sum = 0;

console.time('map求和時間');

aarr.map(

function

(item,index))

console.log('map求和: '+_sum);

console.timeend('map求和時間');

//some

var _sum = 0;

console.time('some求和時間');

aarr.some(

function

(item,index))

console.log('some求和: '+_sum);

console.timeend('some求和時間');

//reduce

console.time('reduce求和時間');

varprev;

aarr.reduce(

function

(prev,item,index))

console.log('reduce求和: '+_sum);

console.timeend('reduce求和時間');

//reduceright

console.time('reduceright求和時間');

varnext;

aarr.reduceright(

function

(next,item,index))

console.log('reduceright求和: '+_sum);

console.timeend('reduceright求和時間');

//eval

console.time('eval求和時間');

var _sum = eval(aarr.join('+'));

console.log('eval求和: '+_sum);

console.timeend('eval求和時間');

//for

console.time('for(var i = 0,len = aarr.length;i < len;i++)求和時間');

var _sum = 0;

for(var i = 0,len = aarr.length;i < len;i++)

console.log('for求和: '+_sum);

console.timeend('for(var i = 0,len = aarr.length;i < len;i++)求和時間');

console.time('for(var i = 0;i < aarr.length;i++)求和時間');

var _sum = 0;

for(var i = 0;i < aarr.length;i++)

console.log('for求和: '+_sum);

console.timeend('for(var i = 0;i < aarr.length;i++)求和時間');

//while

console.time('while求和時間');

var _sum = 0,i = 0,_len =aarr.length;

while(i <_len)

console.log('while求和: '+_sum);

console.timeend('while求和時間');

//do while

console.time('do while求和時間');

var _sum = 0,i = 0,_len =aarr.length;

dowhile(i <_len)

console.log('do while求和: '+_sum);

console.timeend('do while求和時間');

//foreach

var _sum = 0;

console.time('foreach求和時間');

aarr.foreach(

function

(item,index))

console.log('foreach求和: '+_sum);

console.timeend('foreach求和時間');

})()

4999950000

.748046875ms

for求和: 4999950000

do while求和: 4999950000

效率最快的也就是我們用的較多的for迴圈(紅字),但是如果不注意for的優化寫法,就會導致for效能的極大降低

JS 陣列求和方法與效能比較

function sum arr function sum arr return res function sum arr function sum arr function sum arr 執行效率 引數生成const oriarr array.from new array 100000 keys...

js 陣列去重多種方法

var arr 1,2,3,2,1,2,1,34,44 方法一 利用jquery unique var newarr unique arr 方法二 利用indexof去重 var newarr for var i 0 i if newarr.indexof arr i 1 return newarr...

JS陣列去重的多種方法

解決方案 1 依次拿出陣列中的每一項 排除最後一項,最後一項後面沒有需要比較的內容 2 和當前拿出項後面的每一項依次比較 3 如果發現有重複的,我們把找到的這個重複向在原有陣列中刪除掉 方案一 雙重for 迴圈 var ary 1,2,3,2,2,7,9,2,3,5,2,8 for var i 0 ...