js對陣列中相同物件元素進行去重
阿新 • • 發佈:2020-12-17
技術標籤:前端Javascript陣列javascriptnode.js
js對陣列中相同物件元素進行去重,裡面物件相同id,其他不同屬性進行文字疊加
陣列如下
let groupList=[
{
id:1001,
account:"accounr1",
role:0,
name:"UI",
phone:"0000",
email: "[email protected]"
},
{
id:1002,
account:"accounr1",
role:0,
name:"分組5",
phone:"0000",
email:"[email protected]"
},
{
id:1002,
account:"accounr1",
role:0,
name:"測試",
phone:"0000",
email:"[email protected]"
}
];
當前顯示:
需要呈現的樣式
思路:
建立新的空陣列,
迴圈舊陣列,拿到每個物件,如果 通過相同的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