javascript - 如何在 TypeScript 中重新排列数组
问题描述
我有一个包含如下对象的数组,
var users = [{
id: 1,
name: 'Swamy',
category_id: 1,
category_name: "Male"
},
{
id: 2,
name: 'Mahesh',
category_id: 1,
category_name: "Male"
},
{
id: 3,
name: 'Kajal',
category_id: 2,
category_name: "Female"
},
{
id: 4,
name: 'Rasi',
category_id: 2,
category_name: "Female"
}
]
我想根据类别重新安排以上内容
var cat_users = [{
category_id: 1,
category_name: "Male",
users: [{
id: 1,
name: 'Swamy'
}, {
id: 2,
name: 'Mahesh'
}]
},
{
category_id: 2,
category_name: "Female",
users: [{
id: 3,
name: 'Kajal'
}, {
id: 4,
name: 'Rasi'
}]
},
]
我正在寻找解决方案,但似乎找不到任何相关的东西。请帮助重新排列阵列。
解决方案
首先,基于,您可以使用input
对该输入进行分组。category_id
Array.reduce
从该groupedBy
对象,您可以使用Array.map
.
var users = [{
id: 1,
name: 'Swamy',
category_id: 1,
category_name: "Male"
},
{
id: 2,
name: 'Mahesh',
category_id: 1,
category_name: "Male"
},
{
id: 3,
name: 'Kajal',
category_id: 2,
category_name: "Female"
},
{
id: 4,
name: 'Rasi',
category_id: 2,
category_name: "Female"
}
];
const groupBy = users.reduce((acc, cur) => {
acc[cur.category_id] ? acc[cur.category_id].users.push({
id: cur.id,
name: cur.name
}) : acc[cur.category_id] = {
category_id: cur.category_id,
category_name: cur.category_name,
users: [{
id: cur.id,
name: cur.name
}]
};
return acc;
}, {});
const result = Object.entries(groupBy).map(([ category_id, rest ]) => ({
category_id,
...rest
}));
console.log(result);
推荐阅读
- android - android AbstractDynamicObject CustomMessageMissingMethodException 在 4.3 android studio
- caffe - 使用detectron2 model_convert.py将训练好的mask-rcnn模型文件.pth转换为.pb文件报错
- flutter - 颤振 - 将固定标题添加到 SliverList
- nginx - 在命名空间中将 nginx Web 服务器作为单独的 pod 运行
- java - 如何将 if 语句放在 if-else if 语句中
- javascript - 我想使用 ffmpeg 映射两个视频,例如在 nodejs 中的第一个视频上覆盖第二个视频
- angular - 用户输入数字时重复输入类型文件
- java - 在 java GraphX 中运行 PartitionStrategy 后有没有办法生成子图?
- visual-studio-code - 用于最大化 vscode 中的资源管理器(或侧边栏)的命令 ID?
- css - 在 Reactjs 中,如何为这个模板设置响应视图?