js数组唯一性去重-利用对象属性名

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串相等,则达到去重效果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值