1. 程式人生 > >數組去重的幾種方式

數組去重的幾種方式

strong class 一個 spl spa cnblogs 不變 數字 {}

一、利用indexOf查找,ie9以下不兼容

function noRepeat(ary) {
    if (ary instanceof Array) {
        var newAry = [];
        for (var i = 0; i < ary.length; i++) {
            var cur = ary[i];
            if (newAry.indexOf(cur) === -1) {//indexOf IE9以下不兼容
                newAry.push(cur)
            }
        }
        
return newAry; } }

二、利用對象屬性名不能重復的方法。(不適合引號包裹的數字

1.用了聲明了一個新的數組和一個新的對象。

    function noRepeat(ary){
        if(ary instanceof Array){
            var newAry = [];
            var obj ={};
//            不適合區分數組項是字符型的數字,例如:5與‘5‘,
            for(var i = 0; i < ary.length; i++ ){
                
var cur = ary[i]; obj[cur] = cur; } //把對象的屬性名放到新數組中 for(var key in obj){ newAry.push(obj[key]); } return newAry; } }

2.for in

    function noRepeat(ary) {
        if (ary instanceof Array) {
            
var obj = {}; for (var i = 0; i < ary.length; i++) { var cur = ary[i]; obj[cur] = cur;/ } //再用一個數組存儲下 var ary2 = []; for (var key in obj) { ary2.push(obj[key]) } return ary2; } }

3.只聲明一個對象方式,利用splice刪除重復項

    function noRepeat(ary){
        if(ary instanceof Array){
            var obj = {};
            for(var i = 0; i < ary.length; ){
                var cur = ary[i];
                if(obj[cur] == cur){
                    ary.splice(i,1);
//刪除重復項後,i值不變但數組塌陷自定取到後面的一項。i<ary.length是動態計算的不會出錯。

                }else{
                    obj[cur] = cur;
                    i++;
                }

            }
            return ary;

        }

    }

數組去重的幾種方式