乐趣区

关于javascript:js常用的数组去重10种方法度娘绝没有我写的清楚详细

1、利用排序后,再去重
        // 1、利用排序后,再去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 5, 6, 7, 5]
        // 1.1 利用 sort 拍讯
        arrList.sort((a, b) => {return a - b})
        // 1.2 利用冒泡排序
        // for (let i = 0; i < arrList.length; i++) {//     for (let j = i + 1; j < arrList.length; j++) {//         if (arrList[i] > arrList[j]) {//             let temp = arrList[i];
        //             arrList[i] = arrList[j];
        //             arrList[j] = temp;
        //         }
        //     }
        // }
        let newArrList = [];
        for (let i = 0; i < arrList.length; i++) {if (arrList[i] != arrList[i + 1]) {newArrList.push(arrList[i])
            }
        }
2、双重 for 循环去重
 // 2、双重 for 循环去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5]
        for (let i = 0; i < arrList.length; i++) {for (let j = i + 1; j < arrList.length; j++) {if (arrList[i] === arrList[j]) {arrList.splice(j, 1);
                    j--
                }
            }
        }
3、利用 indexof 去重
// 3、利用 indexof 去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        let newArrList = [];
        for (let i = 0; i < arrList.length; i++) {if (newArrList.indexOf(arrList[i]) === -1) {newArrList.push(arrList[i])
            }
        }



4、利用对象属性去重
// 4、利用对象属性去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        let obj = {};
        for (let i = 0; i < arrList.length; i++) {if (!obj[arrList[i]]) {obj[arrList[i]] = arrList[i]
            }
        }
5、利用 es6 的 new Set() 配合... 开展语法去重
// 5、利用 es6 的 new set() 配合... 开展语法去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        console.log([...new Set(arrList)])
6、利用 es6 的 new Set() 配合 Array.from() 去重
 // 6、利用 es6 的 new Set() 配合 Array.from() 去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        console.log(Array.from(new Set(arrList)))
7、利用数组的 includes 办法
 // 7、利用数组的 includes 办法
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        let newArrList = [];
        for (let i = 0; i < arrList.length; i++) {if (!newArrList.includes(arrList[i])) {newArrList.push(arrList[i])
            }
        }
8、利用数组的 filter()+indexOf()
 // 8、利用数组的 filter()+indexOf()
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        let newArrList = arrList.filter((item, index) => {return arrList.indexOf(item) === index;
        })
9、Map 对象是 JavaScript 提供的一种数据结构,构造为键值对模式,将数组元素作为 map 的键存入,前端培训而后联合 has() 和 set() 办法判断键是否反复。// 9、利用 new Map()
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        let newArrList = [];
        let map = new Map();
        arrList.forEach(item => {if (!map.has(item)) {newArrList.push(item);
                map.set(item, true);
            }
        })
10、利用 reduce 联合 includes 去重
// 10、利用 reduce 联合 includes 去重
        let arrList = [1, 1, 4, 2, 4, 3, 8, 4, 999, 5, 6, 7, 5];
        let newArrList = arrList.reduce((prev, cur) => {return prev.includes(cur) ? prev : [...prev, cur]
        },[])
退出移动版