Ecmascript 6 使用filter和groupby映射json数组的值
我的json如下所示。我正在尝试根据角色id对对象进行分组,目标id等于1083 我的json:Ecmascript 6 使用filter和groupby映射json数组的值,ecmascript-6,angular5,lodash,Ecmascript 6,Angular5,Lodash,我的json如下所示。我正在尝试根据角色id对对象进行分组,目标id等于1083 我的json: [ { "id" :1, "role": { "id": "25", }, "target": { "id": "1083", } }, { "id" :2, "role": { "id": "25", }, "target": { "id": "1083",
[ {
"id" :1,
"role": {
"id": "25",
},
"target": {
"id": "1083",
}
},
{
"id" :2,
"role": {
"id": "25",
},
"target": {
"id": "1083",
}
},
{
"id" :3,
"role": {
"id": "25",
},
"target": {
"id": "1084",
}
},
{
"id" :4,
"role": {
"id": "3",
},
"target": {
"id": "1083",
}
}
]
预期结果:
{
"25" : [
{
"id": 1
"role": {
"id": "25",
},
"target": {
"id": "1083",
}
},
{ "id": 2
"role": {
"id": "25",
},
"target": {
"id": "1083",
}
}
],
"3": [
{
"id" :4,
"role": {
"id": "3",
},
"target": {
"id": "1083",
}
}]
}
对于我的结果json,它由25和3分组。第三条记录在我的预期结果中不存在,因为它的目标id是1084
我尝试只获取目标id 1083,但当我尝试使用grouby时,我得到了错误
data.filter(o => {
return o.target.id === "1083"
})
使用lodash via和:
var data=[{“id”:1,“role”:{“id”:“25”,},“target”:{“id”:“1083”,},{“id”:2,“role”:{“id”:“25”,},“target”:{“id”:“1083”,},{“id”:3,“role”:{“id”:“25”,},“target”:{“id”:“1084”,},{“id”:“role”:{“id”:“3”,},“target
const groupIt=(targetId)=>ux0.chain(数据)
.filter(x=>x.target.id===targetId)
.groupBy('role.id')
.value()
console.log(groupIt('1083'))
当我尝试第一个解决方案时,我发现找不到名称“\u”。这一定是lodash版本依赖性问题。现在请看,我已更改为不使用速记来链接,仅使用\uu.chain
是。很抱歉,我只是想知道有没有一种方法可以同时使用sort,这样我就可以按id对元素进行排序。我目前正在使用chain、filter、groupBy