数组去重

73 阅读1分钟
 let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = [];
        let flag = false;
        for (let i = 0; i < arr.length; i++) {
            for (let j = 0; j < resArr.length; j++) {
                if (arr[i] == resArr[j]) {
                    flag = true
                }
            }
            if (!flag) {
                resArr.push(arr[i])
            }
            flag = false
        }
        console.log(resArr) //[100,23,67,45]


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = [...new Set(arr)]
        console.log(resArr) //[100,23,67,45]


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = Array.from(new Set(arr))
        console.log(resArr) //[100,23,67,45]


        let arr = [100, 23, 23, 23, 23, 67, 45];
        for (var i = 0; i < arr.length; i++) {
            for (var j = i + 1; j < arr.length; j++) {
                console.log(j,'==')
                if (arr[i] == arr[j]) {         //第一个等同于第二个,splice方法删除第二个
                    arr.splice(j, 1);
                    j--;
                }
            }
        }
        console.log(arr)


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = []
        for(let i=0;i<arr.length;i++){
            if(resArr.indexOf(arr[i]) === -1){
                resArr.push(arr[i])
            }
        }
        console.log(resArr)


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = []
        for(let i=0;i<arr.length;i++){
            if(!resArr.includes(arr[i])){
                resArr.push(arr[i])
            }
        }
        console.log(resArr)


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = arr.filter((item, index, arr) => {
            //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
            return arr.indexOf(item, 0) === index;
        });
        console.log(resArr)


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let map = new Map();
        let array = new Array();  // 数组用于返回结果
        for (let i = 0; i < arr.length; i++) {
            if (map.has(arr[i])) {  // 如果有该key值
                map.set(arr[i], true);
            } else {
                map.set(arr[i], false);   // 如果没有该key值
                array.push(arr[i]);
            }
        } 
        console.log(array)


        let arr = [100, 23, 23, 23, 23, 67, 45];
        let resArr = arr.reduce((prev,cur) =>prev.includes(cur) ? prev : [...prev,cur],[]);
        console.log(resArr)


        let arr = [
            { id: 1, type: 1, name: '1' },
            { id: 2, type: 1, name: '2' },
            { id: 3, type: 2, name: '1' },
            { id: 4, type: 2, name: '2' },
        ]
        const filterArr = (arr,abs) => {
            if (!Array.isArray(arr)) {
                return
            }
            let obj = []
            let newArr = arr.reduce((cur, next) => {
                console.log(cur,next)
                obj[next[`${abs}`]] ? '' : obj[next[`${abs}`]] = true && cur.push(next)
                return cur
            },[])
            console.log(newArr)
            return newArr
        }
        filterArr(arr,'name')