测试数组:
 
 let arr 
= [3, 1, 0, 0, 1, 1, 2, 3, 4, 2, 1, 2, 4, 2, 3, 0, 2, 4, 2, 1, 4, 5, 5, 5, 3
];
 
先来几个简单的
 
//数组去重-1
 
function arrayUniq_1
(arr
){
            let o 
= {};
            for (let i 
= 0
; i
<arr.length
; i++
){
                var t 
= arr
[i
]
                if
(typeof o
[t
] !== "undefined"){
                    arr
[i
] = arr
[arr.length-1
]
                    arr.length--
;
                    i--
;;
                }
                o
[t
] = t
;
            }
            o 
=  null
;
            return arr
;
     }
 console.log
("数组除重-1:" + arrayUniq_1
(arr
));
 
//数组去重0
    
function arrayUniq0
(arr
) {
        let result 
= [...new Set
(arr
)]
        return result
;
    }
    console.log
("数组除重0:" + arrayUniq0
(arr
));
    
 //数组去重1
    
function arrayUniq1
(arr
) {
        let result 
= arr.filter
((item, index, array
) => {
            return array.lastIndexOf
(item
) == index
        
})
        return result
;
    }
    console.log
("数组除重1:" + arrayUniq1
(arr
));
    
    //数组去重2
    
function arrayUniq2
(arr
) {
        let result 
= [];
        arr.forEach
(element 
=> {
            result.indexOf
(element
) == -1 
&& result.push
(element
)
        });
        return result
;
    }
    console.log
("数组除重2:" + arrayUniq2
(arr
));
    
    //数组去重3
    
function arrayUniq3
(arr
) {
        let obj 
= {};
        var resultArr 
= [];
        for (let index 
= 0
; index 
< arr.length
; index++
) {
            if (!(arr
[index
] in obj
)) {
                obj
[arr
[index
]] = 0
;
                resultArr.push
(arr
[index
]);
            }
        }
        return resultArr
;
    }
    console.log
("数组除重3:" + arrayUniq3
(arr
));
 
双层循环不能少
 
//数组去重4
    
function arrayUniq4
(arr
) {
        var resultArr 
= [];
        for (let index 
= 0
; index 
< arr.length
; index++
) {
            let j 
= 0
;
            for (let i 
= 0
; i 
< arr.length
; i++
) {
                if (arr
[index
] == arr
[i
]) {
                    j++
;
                    if (j 
> 1
) {
                        delete arr
[i
];
                    }
                }
            }
            if (arr
[index
] != undefined
) {
                resultArr.push
(arr
[index
]);
            }
        }
        return resultArr
;
    }
    console.log
("数组除重4:" + arrayUniq3
(arr
));
    // 
for forEach for
...in
.. 两两组合 没意思不写了
    // 
for forEach for
...in
.. 替换除重1的外部循环
    // 
for forEach for
...in
.. 替换除重2的外部循环
 
替换一下1方法
 
 
    //数组去重5
    
function arrayUniq5
(arr
) {
        let result 
= [].filter.call
(arr, 
(item, index, array
) => {
            return array.lastIndexOf
(item
) == index
        
})
        return result
;
    }
    console.log
("数组除重5:" + arrayUniq5
(arr
));
   
    //数组去重8
    
function arrayUniq8
(arr
) {
        let result 
= [].filter.bind
(arr
)((item, index, array
) => {
            return array.lastIndexOf
(item
) == index
        
})
        return result
;
    }
    console.log
("数组除重8:" + arrayUniq8
(arr
));
    //数组去重9
    
function arrayUniq9
(arr
) {
        let result 
= [].filter.apply
(arr, 
[(item, index, array
) => {
            return array.lastIndexOf
(item
) == index
        
}])
        return result
;
    }
    console.log
("数组除重9:" + arrayUniq9
(arr
));
    // 按照 5,8,9 进行替换  你懂得有多少种
 
替换下外部
 
   //数组去重6
    
function arrayUniq6
(arr
) {
        let obj 
= {};
        var resultArr 
= [];
        [].forEach.call
(arr, element 
=> {
            if (!(element 
in obj
)) {
                obj
[element
] = 0
;
                resultArr.push
(element
);
            }
        })
        return resultArr
;
    }
    console.log
("数组除重6:" + arrayUniq6
(arr
));
    //数组去重7
    
function arrayUniq7
(arr
) {
        let obj 
= {};
        var resultArr 
= [];
        [].forEach.bind
(arr, element 
=> {
            if (!(element 
in obj
)) {
                obj
[element
] = 0
;
                resultArr.push
(element
);
            }
        })()
        return resultArr
;
    }
    console.log
("数组除重7:" + arrayUniq7
(arr
));
 
由此推算 … 你懂得(滑稽练)