简单数组去重的方法有很多种,这里我这介绍其中的两种方法:
1.使用es5方法:
function quchong(arr) { var newarr = []; for(var i = 0; i< arr.length; i++) { if(newarr.indexOf(arr[i]) == -1) { newarr.push(arr[i]); } } return newarr; }
这是利用的indexOf方法的特性,如果存在相同的则返回存在元素的下标,不存在则返回-1,从而实现去重的目的。当然也可使用es6的新方法includes来替换indexOf方法。
2.使用es6方法:
Array.from(new Set(arr))
直接使用es6中新增的新数据类型set,利用set中不会存在重复元素以及可以和数组结构方便的互相转化特性来实现。
简单数据去重的方法有很多,大家有兴趣可以自己挖掘。下面来介绍包含对象元素的数组要如何去重呢?如何我们还是采用上面的方法我们会发现重复的元素依旧会出现,根本没法达到去重的目的。我们可以通过判断对象中的某一个属性的值是否相同来进行去重
//原始写法 function quchong(arr, name) { var newarr = []; var newobj = {}; for(var i = 0; i < arr.length; i++) { if(!newobj[arr[i].name]) { newarr.push(arr[i]); newobj[arr[i].name] = true; } } reutrn newarr; } //es6写法 const quchong = (arr, name) =>{ let newarr = []; let newobj = {}; for(let i = 0; i < arr.length; i++) { if(!newobj[arr[i].name]) { newarr.push(arr[i]); newobj[arr[i].name] = true; } } return newarr; }
假如我们的对象中包含name属性,我们就可以通过对象赋值的特性来进行去重了!