js数组完美去重,区分undefined,NaN,null,字符串等

function array_unique(arr) {
            let len = arr.length;
            if (!len) {
                return [];
            }
            let tmp = [];
            for (let i = 0; i < len; i++) {
                if (
                    tmp.findIndex((v) => { return JSON.stringify(v) === JSON.stringify(arr[i]) }) === -1
                ) {
                    tmp.push(arr[i])
                }
            }
            return tmp;
        }
        let arr = [1, 2, 3, 4, '1', 2, undefined, undefined, 'undefined', NaN, NaN, {}, {}, { a: 1 }, { a: 1 }]
        let newArr = array_unique(arr);
        console.log(newArr)
        // function array_unique(arr) {
        //     let len = arr.length
        //     if (!len) {
        //         return []
        //     }
        //     let tmp = []
        //     for (let i = 0; i < len; i++) {
        //         // 判断数组arr的元素是否在数组tmp中
        //         if (tmp.findIndex((v) => JSON.stringify(v) === JSON.stringify(arr[i])) === -1) {
        //             tmp.push(arr[i])
        //         }
        //     }
        //     return tmp
        // }
        // let arr = [1, 2, 3, '1', 2, undefined, undefined, 'undefined', NaN, NaN, {}, {}, { a: 1 }, { a: 1 }]
        // let newArr = array_unique(arr)
        // console.log(newArr) // [1, 2, 3, '1', undefined, 'undefined', NaN, {}, {a: 1}]

 

posted @ 2020-05-15 11:34  问问大将军  阅读(836)  评论(0编辑  收藏  举报