三种方法数组去重
1、原生js去重
// 原生方法去重 // 数组[2,3,5,4,3,2,6,8,5,4,6,2]去重,返回一个新数组[2,3,5,4,6,8](用函数) /* 1、创建新数组 2、遍历旧数组 3、遍历新数组 4、新数组元素与旧数组元素比较 5、没有相同才push */ var arrRemove = function () { var arr = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2]; var flag = true;//没有相同的元素 // 1、 var newArr = []; // 2、 for (var i = 0; i < arr.length; i++) { flag = true; // 3、 for (var j = 0; j < newArr.length; j++) { // 4、 if (newArr[j] == arr[i]) { // 不要push了 flag = false; } } // 5、 if (flag) { newArr.push(arr[i]); } } // 最终的结果 console.log(newArr);///[2,3,5,4,6,8] } arrRemove();
2、利用对象的属性名不能重复去重
var arr = [3, 2, 5, 1, 5, 3, 2, 4, 6, 1, 2, 3]; /* 利用对象的属性名不能重复的特性对数组去重 数组:有序的 对象:无序的 */ /* 思路: 1、创建新数组、创建新对象 2、遍历旧数组 3、让旧数组中的元素当做新对象的属性,属性值随意写 4、遍历新对象 5、将新对象中的属性push到新数组中即可 */ // 1、 var newArr = []; var newObj = {}; // 2、 for (var i = 0; i < arr.length; i++) { // 3、 newObj[arr[i]] = 1; } console.log(newObj); // 4、 for (x in newObj) { newArr.push(Number(x)); } console.log(newArr);
3、set结构中的值不能重复去重
let set = new Set([1, 3, 2, 3, 4, 5, 5, 4, 4, 3, 2, 1]); console.log(set);//Set(5) {1, 3, 2, 4, 5} let newArr = Array.from(set); console.log(newArr);//(5) [1, 3, 2, 4, 5]