数组去重操作几种方法
1. ES6 Set
let a = [1,1,2,2,3,4,5,6,7,7,7]; Array.from(new Set(a)); //[1, 2, 3, 4, 5, 6, 7] [...new Set(a)]; //[1, 2, 3, 4, 5, 6, 7]
2. IndexOf 判断
let result = []; a.map(val => { if(result.indexOf(val) < 0){ result.push(val); } })
3.sort 排序后 两两相邻的做比较
function unique(arr) { if (!Array.isArray(arr)) { console.log('type error!') return; } arr = arr.sort() var arrry= [arr[0]]; for (var i = 1; i < arr.length; i++) { if (arr[i] !== arr[i-1]) { arrry.push(arr[i]); } } return arrry; } unique(a)
4. includes 去重 类似 indexOf
let result = []; a.map(val => { if(result.includes(val) < 0){ result.push(val); } });
console.log(result) // [1,2,3,4,5,6,7]
5. map 去重
function unique(arr) { 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]); } } return array ; }
unique(a);
其他包括很多 filter lastIndexOf 等等大同小异