Javascript에서 데이터 정리를 수행하고 있으며 공통 ID를 기반으로 개체를 결합하는 방법이 있는지 궁금합니다.
다음을 고려하면 :
{"subject":"Hadji Singh","predicate":"nameOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"}
{"subject":"Race Roger Bannon","predicate":"nameOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"}
{"subject":"Jessie Bannon","predicate":"nameOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"}
{"subject":"Adventurer","predicate":"departmentOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"}
{"subject":"Bodyguard","predicate":"departmentOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"}
{"subject":"Adventurer","predicate":"departmentOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"}
이런 식으로 바꾸는 방법이 있습니까?
[{id:3f540200-58b9-40a5-91c2-faafec75216f, name:Hadji Singh, department:Adventurer},
{id:9575cf33-8992-4763-81bb-fc640ffa3545, name:Jessie Bannon, department:Adventurer},
{id:41376a49-34ee-4ed8-b5f5-3f8c92b107f8, name:Race Bannon, department:Bodyguard}]
나는 두 개의 for 루프 (아마도)와 많은 if를 생각하고 있지만 아마도 내가 놓친 방법이있을 것입니다.
의미가 있다면 node.js를 사용하고 있습니다. 도움이 될 수있는 모듈이 있습니까?
감사.
reduce
배열의 사용 방법 :
let a = [{"subject":"Hadji Singh","predicate":"nameOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"},
{"subject":"Race Roger Bannon","predicate":"nameOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"},
{"subject":"Jessie Bannon","predicate":"nameOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"},
{"subject":"Adventurer","predicate":"departmentOfUser","id":"3f540200-58b9-40a5-91c2-faafec75216f"},
{"subject":"Bodyguard","predicate":"departmentOfUser","id":"41376a49-34ee-4ed8-b5f5-3f8c92b107f8"},
{"subject":"Adventurer","predicate":"departmentOfUser","id":"9575cf33-8992-4763-81bb-fc640ffa3545"}]
let b = a.reduce((acc, val) => {
let id = val.id
let idx = acc.findIndex((e) => e.id == id);
let subj = { id: id }
let predicate = val['predicate'].split('OfUser')[0]
subj[predicate] = val['subject']
if (-1 == idx) {
acc.push(subj);
} else {
acc[idx] = Object.assign(acc[idx], subj);
}
return acc
}, [])
console.log(b);
//[ { id: '3f540200-58b9-40a5-91c2-faafec75216f',
// name: 'Hadji Singh',
// department: 'Adventurer' },
// { id: '41376a49-34ee-4ed8-b5f5-3f8c92b107f8',
// name: 'Race Roger Bannon',
// department: 'Bodyguard' },
// { id: '9575cf33-8992-4763-81bb-fc640ffa3545',
// name: 'Jessie Bannon',
// department: 'Adventurer' } ]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다