//前置条件,需要将某一个属性相同的对象数组中的元素合并成一个对象,同名属性如果有内容,内容是一致的,所以仅需保留有数据的属性
//如下对象,名称是唯一属性,最终会合并为[{名称:"富贵",编号:123,手机号:"13678909876"}]这么一个对象
var list = [
{
名称:"富贵",
编号:'',
手机号:'13678909876'
},
{
名称:"富贵",
编号:123,
手机号:''
}
]
var newList = [];//合并去重后的对象数组
var keys = Object.keys(list[0]);//获取属性名称集合(名称,编号...)
for(let i=0;i<list.length;i++){
//查找去重对象数组中是否存在当前的对象
let index = newList.findIndex(x=>x.名称 == list[i].名称);
//已存在,筛选属性
if(index>-1){
let newRoad = newList[index];
let road= list[i];
//遍历属性
for (let j = 0; j < keys.length; j++) {
//如果已存在的对象中某个属性值为空,则从找到的同名对象中查找相同属性是否有值
if(newRoad[keys[i]] =='' || newRoad[keys[i]] ==null){
//如果找到的同名对象对应的属性有值,则对目标属性赋值
if(road[keys[i]] !='' && road[keys[i]] !=null){
newRoad[keys[i]] = road[keys[i]];
}
}
}
}else{
newList.push(list[i]);
}
}
console.log(newList);
对象数组去重并合并属性数据
于 2023-07-25 22:46:05 首次发布