1. 程式人生 > >數組去重的方法總結

數組去重的方法總結

doctype 是否 bsp cti fun [0 logs war href

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>數組去重的 3種方法</title>
</head>
<body>

    <script type="text/javascript">
        var demoAr = [3,4,5,5,7,2,1,4,3]; 

        // 方法一:遍歷數組,建立新數組,利用indexOf判斷是否存在於新數組中,不存在則push到新數組,最後返回新數組
function unique1(ar){ var newAr = []; for( var i=0; i<ar.length; i++ ){ if( newAr.indexOf(ar[i]) === -1 ){ newAr.push(ar[i]); } } return newAr; } // 方法二:遍歷數組,利用object對象保存數組值,判斷數組值是否已經保存在object中,未保存則push到新數組並用object[arrayItem]=1的方式記錄保存
function unique2(ar){ var newAr = []; var obj = {}; for(var i=0, j=ar.length; i<j; i++){ if( !obj[ar[i]] ){ obj[ar[i]] = 1; // console.log(obj); newAr.push(ar[i]); } }
return newAr; } // 方法三:數組下標判斷法, 遍歷數組,利用indexOf判斷元素的值是否與當前索引相等,如相等則加入 function unique3(ar){ var newAr = []; ar.forEach(function(item, index, array){ if( ar.indexOf(item) === index ){ newAr.push(item); }; }); return newAr; } // 方法四:數組先排序, 然後比較倆數組一頭一尾進行去重 (優點:效率高 缺點:會改變數組原有順序) function unique4(ar){ var newAr = [], end; ar.sort(); end = ar[0]; newAr.push(ar[0]); for( var i=1; i<ar.length; i++ ){ if(ar[i]!=end){ newAr.push( ar[i] ); end = ar[i]; } } return newAr; }
console.log( unique1(demoAr) );
// console.log( unique2(demoAr) ); // console.log( unique3(demoAr) ); // console.log( unique4(demoAr) );

</script> </body> </html>

參考自:http://www.cnblogs.com/leonwang/p/4845576.html

數組去重的方法總結