js对数组中相同对象元素进行去重,里面对象相同id,其他不同属性进行文字叠加
数组如下
let groupList=[
{
id:1001,
account:"accounr1",
role:0,
name:"UI",
phone:"0000",
email:"adada@.com"
},
{
id:1002,
account:"accounr1",
role:0,
name:"分组5",
phone:"0000",
email:"adada@.com"
},
{
id:1002,
account:"accounr1",
role:0,
name:"测试",
phone:"0000",
email:"adada@.com"
}
];
当前显示:
需要呈现的样式
思路:
创建新的空数组,
循环旧数组,拿到每个对象,如果 通过相同的id属性去查找对象中的某个key是否包含相同的属性名,而value不同,
最后加入到新数组中 返回出去.
// 数据合并 array:需合并的数据
function arrMerge(array) {
// 保存新数组
let newArr = [];
array.forEach(item => {
// 保存判断结果
let res = newArr.isExist(item.id, "id");
// 若不存在新数组中,则直接追加进新数组
if (res == -1) {
newArr.push(item);
} else {
// 若存在,则将除id外的字段追加进新数组中
for (var key in newArr[res]) {
// if (key == "id") continue;
if (newArr[res][key] == item[key]) continue;
newArr[res][key] += item[key];
};
};
});
return newArr;
};
// 判断元素是否存在数组中对象属性中 value:元素 key:对象属性
Array.prototype.isExist = function(value, key) {
for (let i = 0, len = this.length; i < len; i++) {
// 若存在,则返回对应的索引
if (this[i][key] === value) {
return i;
}
}
// 否则返回 -1
return -1;
}
console.log(arrMerge(groupList));
你get了啵 T_T