为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 JSON 对象数组中对 JSON 对象进行分组?

如何从 JSON 对象数组中对 JSON 对象进行分组?

湖上湖 2022-01-07 16:51:13
这是一个 JSON 对象数组,其中包含我想要分组的数组值(拉唯一):let myArray = [    {        "_id": "1",        "subdata": [            {                "subid": "11",                "name": "A"            },            {                "subid": "12",                "name": "B"            }        ]    },    {        "_id": "2",        "subdata": [            {                "subid": "12",                "name": "B"            },            {                "subid": "33",                "name": "E"            }        ]    }]最后我需要得到:[    {        "subid": "11",        "name": "A"    },    {        "subid": "12",        "name": "B"    },    {        "subid": "33",        "name": "E"    }]我试过 lodash 没有成功:let newArray = lodash.uniqBy(lodash.concat(myArray, 'subdata.subid'), '_id');当然,我可以一个一个地扫描每个数组元素,但我认为用 lodash 可以很容易地做到这一点
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

使用_.flatMap()让所有的数组subdata的项目,然后用_.uniqueBy()用subid:


const myArray = [{"_id":"1","subdata":[{"subid":"11","name":"A"},{"subid":"12","name":"B"}]},{"_id":"2","subdata":[{"subid":"12","name":"B"},{"subid":"33","name":"E"}]}];


const result = _.uniqBy(_.flatMap(myArray, 'subdata'), 'subid');


console.log(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>


使用 lodash/fp 您可以使用_.flow()相同的方法生成函数:


const fn = _.flow(

  _.flatMap('subdata'),

  _.uniqBy('subid')

);


const myArray = [{"_id":"1","subdata":[{"subid":"11","name":"A"},{"subid":"12","name":"B"}]},{"_id":"2","subdata":[{"subid":"12","name":"B"},{"subid":"33","name":"E"}]}];


const result = fn(myArray);


console.log(result);

<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>



查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信