gpt4 book ai didi

javascript - Lodash groupby 多个条件

转载 作者:行者123 更新时间:2023-11-29 18:46:07 30 4
gpt4 key购买 nike

我有这个输入

var data = [
{
'group':
{
'id': 1,
'name': 'admin'
},
'role': 'name1',
'screen': {
'info': 'white',
'name': 'Cat'
}
},
{
'group':
{
'id': 1,
'name': 'admin'
},
'role': 'name2',
'screen': {
'info': 'Grey',
'name': 'Dog'
}
},
{
'group':
{
'id': 2,
'name': 'client'
},
'role': 'name3',
'screen': {
'info': 'Grey',
'name': 'goldfish'
}
}
];
//obj=>JSON.stringify({age: obj.age, address: obj.details[0].address})
//obj=>JSON.stringify({group: obj.name, displayname: obj})
var result=_.chain(data).groupBy("group.name").map(function(v, i) {
return {
group: i,
role: _.get(_.find(v, 'role'), 'role'),
screen: _.map( v, 'screen'),
}
}).value();

document.body.innerHTML = '<pre>' + JSON.stringify(result, null, ' ') + '</pre>';
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>

这是我想要的输出:[
{
“组”:“管理员”,
“屏幕”: [
{
“Angular 色”:“姓名1”,
“用户界面”:{
“信息”:“白色”,
“名字”:“猫”
}
},
{
“Angular 色”:“名字2”,
“用户界面”:{
“信息”:“灰色”,
“名称”:“狗”
}
}
]
},
{
“组”:“客户”,
“屏幕”: [
{
“Angular 色”:“名字3”,
“用户界面”:{
“信息”:“灰色”,
“名称”:“金鱼”
}
}
]
}
]
所有人的帮助总是对我有帮助。谢谢。 :(

最佳答案

您需要使用 map 的回调函数来手动创建结果屏幕对象:

var data = [{"group":{"id":1,"name":"admin"},"role":"name1","screen":{"info":"white","name":"Cat"}},{"group":{"id":1,"name":"admin"},"role":"name2","screen":{"info":"Grey","name":"Dog"}},{"group":{"id":2,"name":"client"},"role":"name3","screen":{"info":"Grey","name":"goldfish"}}];

var result = _(data)
.groupBy("group.name")
.map(function(v, group) {
return {
group,
screen: _.map(v, function(o) {
return {
role: o.role,
ui: o.screen
};
}),
}
})
.value();

console.log(result);
.as-console-wrapper {
max-height: 100% !important;
top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>

关于javascript - Lodash groupby 多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53847913/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com