js通过map和set判断数组中的对象的某个属性是否有重复

一、测试数据
var specList = [
   
     {specDesc:'1233'},
{specDesc:'123'},
{specDesc:'1234'},
]


二、method

Fun ONE: 使用map()遍历specList并生成目标属性所构成的新数组mapArr,再利用set()传入数组并输出去重复后的数组(setArr)的特性,判断其size与arr的length比较;若小于,则有重复。

var mapArr= specList.map(item=>item.specDesc);
var setArr = new Set(arrNum);//去重复
console.log(setArr .size<mapArr.length?'有重复':'无重复');

//方式一 利用map判断
function isExistInObj1(arr,key) {
	if([new Set(arr.map(item=>item.key))].size < arr.length){
	    console.log('重复')
	}else{
		console.log('无重复');
	}
}

Fun TWO: 使用hash对象映射的方式

//方式二
function isExistInObj2(arr,key) {
	let hash = {},len = arr.length;   
	while(len){
		len--; 
		if(hash[arr[len][key]]){ 
		    return true;
		}else{ 
			hash[arr[len][key]] = arr[len][key]; 
		}
	} 
	//console.log(hash)
	return false;
}



  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值