Array.prototype.unique = function(){
//利用了对象属性名的唯一性
var obj = {},
len = this.length,
newArr = [];
for(var i =0;i<len;i++)
{
if(!obj[this[i]]){
obj[this[i]] = i+1;
newArr.push(this[i]);
}
}
return newArr;
}
var arr2 = [1,1,1,0,0,0,0,"a","b","a","b"];
//方案1
var newArr = arr2.unique(); //返回值 newArray的 [1,0,"a","b"];
//方案2 利用ES6 的 Set来实现,针对如上arr2 数组中单个值的去重问题实现如下
var newArr2 = [...new Set(arr2)]; //newArr2 即是已去重后的数据
ES6 借助Set 及array的map方法 实现去重
let arr = [
{ name: 'a', num: 1},
{ name: 'b', num: 1},
{ name: 'c', num: 1},
{ name: 'd', num: 1},
{ name: 'a', num: 1},
{ name: 'a', num: 1},
{ name: 'a', num: 1}
]
function unique(arr) {
return [...new Set(arr.map(e => JSON.stringify(e)))].map(e => JSON.parse(e))
}
//调用
let newArr = unique(arr)//console.log(newArr) 可得到内容去重后的数组
利用的是json字符串 存入net Set中 ,若两个对象的json串相等,则达到去重效果