我有這樣的資料:
users = [{
"emp_id": 1,
"user": {
"emp_full_name": "Test",
"emp_email": "[email protected]",
"emp_phone_no": null,
"preferred_work_type": null
},
"hashtag": {
"id": 1,
"name": "NodeJs",
"hashtag_group_id": 1
},
"difficulty": "HARD"
}, {
"emp_id": 2,
"user": {
"emp_full_name": "test2",
"emp_email": "[email protected]",
"emp_phone_no": null,
"preferred_work_type": null
},
"hashtag": {
"id": 1,
"name": "NodeJs",
"hashtag_group_id": 1
},
"difficulty": "EASY"
}, {
"emp_id": 1,
"user": {
"emp_full_name": "Test",
"emp_email": "[email protected]",
"emp_phone_no": null,
"preferred_work_type": null
},
"hashtag": {
"id": 4,
"name": "Javascript",
"hashtag_group_id": 1
},
"difficulty": "HARD"
}]
我想將hashtag具有相同emp_id. 如果emp_id有多個資料,則應洗掉emp_id具有單個資料的資料。hashtag
所以基本上這就是我所期望的:
[{
"emp_id": 1,
"user": {
"emp_full_name": "Test",
"emp_email": "[email protected]",
"emp_phone_no": null,
"preferred_work_type": null
},
"hashtag": [{
"id": 1,
"name": "NodeJs",
"hashtag_group_id": 1
}, {
"id": 4,
"name": "Javascript",
"hashtag_group_id": 1
}],
"difficulty": "HARD"
}, {
"emp_id": 2,
"user": {
"emp_full_name": "test2",
"emp_email": "[email protected]",
"emp_phone_no": null,
"preferred_work_type": null
},
"hashtag": {
"id": 1,
"name": "NodeJs",
"hashtag_group_id": 1
},
"difficulty": "EASY"
}]
如何轉換這樣的資料?
我不知道如何解決這個問題,我嘗試使用filter(), 并map()使用一些驗證條件,但無法讓它作業。
uj5u.com熱心網友回復:
您可以.reduce()使用.findIndex(). 試試這個
let users = '[{"emp_id": 1, "user": {"emp_full_name": "Test", "emp_email": "[email protected]", "emp_phone_no": null, "preferred_work_type": null }, "hashtag": {"id": 1, "name": "NodeJs", "hashtag_group_id": 1 }, "difficulty": "HARD"}, {"emp_id": 2, "user": {"emp_full_name": "test2", "emp_email": "[email protected]", "emp_phone_no": null, "preferred_work_type": null }, "hashtag": {"id": 1, "name": "NodeJs", "hashtag_group_id": 1 }, "difficulty": "EASY"}, {"emp_id": 1, "user": {"emp_full_name": "Test", "emp_email": "[email protected]", "emp_phone_no": null, "preferred_work_type": null }, "hashtag": {"id": 4, "name": "Javascript", "hashtag_group_id": 1 }, "difficulty": "HARD"} ]';
users = JSON.parse(users)
users = users.reduce((arr, o) => {
let idx = arr.findIndex(({emp_id}) => emp_id === o.emp_id);
if( idx !== -1 ) arr[idx].hashtag = [].concat(arr[idx].hashtag, o.hashtag)
else arr.push(o)
return arr;
}, []);
console.log(users)
uj5u.com熱心網友回復:
您可以創建一個由該鍵鍵入的 Mapemp_id并通過該鍵收集用戶。當已有條目時,擴展hashtagusing [].concat。如果它還不是一個陣列,這將創建一個陣列。
const users = [{"emp_id": 1,"user": {"emp_full_name": "Test","emp_email": "[email protected]","emp_phone_no": null,"preferred_work_type": null},"hashtag": {"id": 1,"name": "NodeJs","hashtag_group_id": 1},"difficulty": "HARD"},{"emp_id": 2,"user": {"emp_full_name": "test2","emp_email": "[email protected]","emp_phone_no": null,"preferred_work_type": null},"hashtag": {"id": 1,"name": "NodeJs","hashtag_group_id": 1},"difficulty": "EASY"},{"emp_id": 1,"user": {"emp_full_name": "Test","emp_email": "[email protected]","emp_phone_no": null,"preferred_work_type": null},"hashtag": {"id": 4,"name": "Javascript","hashtag_group_id": 1},"difficulty": "HARD"}];
const map = new Map;
for (const user of users) {
const match = map.get(user.emp_id);
if (match) match.hashtag = [].concat(match.hashtag, user.hashtag);
else map.set(user.emp_id, {...user});
}
const result = [...map.values()];
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478580.html
標籤:javascript 目的
上一篇:比較2個嵌套資料結構(目標 源),與源對應物相比,缺失目標值的適當合并策略是什么?
下一篇:Java中的類和物件
