数组去重的两种方法: 通过下标去重, 通过对象属性的方法去重
- // 下标的方法
- function getArray(arr){
- var newArray=[];
- arr.forEach(function(item,index,arr){
- if(newArray.indexOf(item)==-1){
- newArray.push(item)
- }
- })
- return newArray;
- }
- // 对象属性的方法
- function getArray2(arr){
- var newObject={};
- var newArray=[];
- arr.forEach(function(item,index,arr){
- if(!newObject[item]){
- newArray.push(item);
- newObject[item]=1;
- }else{
- newObject[item]++;
- }
- })
- return newArray
- }
- }
还有去重的方式可以是:
遍历去重: 定义一个新数组, 并存放原数组的第一个元素, 然后将元素组一一和新数组的元素对比, 若不同则存放在新数组中
先排序后去重: 先将原数组排序, 在与相邻的进行比较, 如果不同则存入新数组
ES6 的 set 方法
- // 遍历去重
- function unique(arr){
- var res = [arr[0]];
- for(var i=1;i<arr.length;i++){
- var repeat = false;
- for(var j=0;j<res.length;j++){
- if(arr[i] == res[j]){
- repeat = true;
- break;
- }
- }
- if(!repeat){
- res.push(arr[i]);
- }
- }
- return res;
- }
- // 先排序, 后去重
- function unique(arr){
- var arr2 = arr.sort();
- var res = [arr2[0]];
- for(var i=1;i<arr2.length;i++){
- if(arr2[i] !== res[res.length-1]){
- res.push(arr2[i]);
- }
- }
- return res;
- }
- //ES6 中的 set 用拓展运算符
- let unique=[...new Set(array)];
- //Es6 中的 set 方法 用 Array.from 转换成数组
- function dedupe(array){
- return Array.from(new Set(array));
- }
来源: http://www.bubuko.com/infodetail-2550520.html