关于对象数组的一些方法总结

关于数组对象的一些方法总结


一、判断对象数组是否重复

根据某个属性判断对象数组中,是否含有该属性重复的对象。

let objectArr = [
	{id: 1, name: 2, age: 3}, 
	{id: 2, name: 3, age:24},
	{id: 1, name: 5, age:6}
]

function isSameKeyValue(arr, key) {
	// 1.利用map方法得到一个key值的数组
	const keyArr = arr.map(value => value[key]);
	// 2.利用set集合不重复的特性对keyArr进行去重
	const keySet = new Set(keyArr);
	// 3.若两个length相等,则证明无重复的值,则返回false,相反返回true
	return keySet.size === keyArr.length ? false : true;
}

console.log(isSameKeyValue(objectArr, 'id'));    // true
console.log(isSameKeyValue(objectArr, 'name'));  // false
console.log(isSameKeyValue(objectArr, 'age'));  // false

二、复制对象数组

很多时候,我们想要复制一个对象数组的值,如果使用 map() 或者 lodash中的 _.clone(),会发现对于数组里面的JSON对象,指针还是相同的,改变原数组时,对该复制数组是有影响的。

function copyObjectArr(arr) {
	let copyList = [];
	arr.forEach(item => {
		// 利用 {...obj} 进行对象的值的复制
		copyList.push({...item})
	})
    return copyList;
}

let list1 = copyObjectArr(list);
list1[0]['id'] = 100;
console.log(list1);
console.log(list);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值