我有一系列的人际关系(people1
和people2
),我想让所有的人都处于这些关系中。 (p1
和p2
的集合)
例如- 我有这个数组-
[
{p1fName: 'J1', p1lName: 'J1', p2fName: 'J2', p2lName: 'J2'},
{p1fName: 'J1', p1lName: 'J1', p2fName: 'J3', p2lName: 'J3'},
{p1fName: 'J3', p1lName: 'J3', p2fName: 'J4', p2lName: 'J4'},
]
我希望结果是这样-
[
{fname: 'J1', lname: 'J1'},
{fname: 'J2', lname: 'J2'},
{fname: 'J3', lname: 'J3'},
{fname: 'J4', lname: 'J4'}
]
每个people
的标识符是fName
和lName
的组合。
现在我将字符串(${fname}_${lname}
)映射到我想返回的对象(peopleId
),并以此方式保持唯一性。
您是否知道如何使用Set来做到这一点?
谢谢
答案 0 :(得分:0)
尝试一下:
const x =[ {p1fName: 'J1', p1lName: 'J1', p2fName: 'J2', p2lName: 'J2'},
{p1fName: 'J1', p1lName: 'J1', p2fName: 'J3', p2lName: 'J3'},
{p1fName: 'J3', p1lName: 'J3', p2fName: 'J4', p2lName: 'J4'}
]
const transform = data => {
const [d1,d2] = x.flatMap(({p1fName, p1lName, p2fName, p2lName})=> ([
{fname: p1fName, lname: p1lName},
{fname: p2fName, lname: p2lName}
]))
.reduce(([r1,r2],{fname, lname})=>{
const key = `${fname}_${lname}`
if (!r1.has(key)) {
r1.add(key)
r2.push({fname, lname})
}
return [r1,r2]
}, [new Set(), []])
return d2
}
console.log(transform(x))
首先,您要在找到唯一的{fname,lname}集之前将数组(输入)展平为{fname,lname}