关于数组对象的一些方法总结
一、判断对象数组是否重复
根据某个属性判断对象数组中,是否含有该属性重复的对象。
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);