javascript - 如何在 JavaScript 中总结对象信息
问题描述
我正在尝试整理一个涵盖了其中一些信息的对象。
const tests = [
{
id: 1,
name: 'taro',
designId: 1,
designName: 'design1'
},
{
id: 1,
name: 'taro',
designId: 2,
designName: 'design2'
},
{
id: 2,
name: 'Bob',
designId: 3,
designName: 'design3'
},
{
id: 2,
name: 'Bob',
designId: 4,
designName: 'design4'
},
];
我想设定以下期望。
result = [
{
id: 1,
name: 'taro',
designs: [
{ designId: 1, designName: 'design1' },
{ designId: 2, designName: 'design2' }
]
},
{
id: 2,
name: 'Bob',
designs: [
{ designId: 3, designName: 'design3' },
{ designId: 4, designName: 'design4' }
]
}
]
我尝试过使用 lodash groupby 作为我尝试过的东西,但我很挣扎,因为我无法摆脱额外的属性。
const result = _.chain(tests)
.groupBy('id')
.map((value, key) => ({ id: key, designs: value }))
.value();
解决方案
当您映射组时,映射,并从每个组value
中省略id
and :name
const tests = [{"id":1,"name":"taro","designId":1,"designName":"design1"},{"id":1,"name":"taro","designId":2,"designName":"design2"}];
const result = _(tests)
.groupBy('id')
.map((value, id) => ({
id,
name: value[0].name,
designs: value.map(o => _.omit(o, ['id', 'name']))
}))
.value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
推荐阅读
- php - Firebase 通过 POST 请求向 Android 应用主题发送云消息 - Google Oauth Playground Access Token Expiration
- c# - 这是什么类型的显式?
- c++ - 在 C++ 中取消引用这个指针是否有效?
- asynchronous - Python 3.6 更新 dict 异步
- flutter - Flutter Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null
- amazon-web-services - 统一来自 kubernetes 集群的出站请求 ip
- php - 网页错误“无法访问此站点”
- python - Python:字典列表到 pd 数据框(Twitter API)
- python - 如何在 Python 中将 int 与字符串连接起来?
- python - N个大小为M的字符串与K个大小为L的子字符串的比较