javascript - 过滤和组合具有相同属性的对象数组中的索引
问题描述
试图找出在 JS 中获取一组对象并根据共享属性值组合其索引属性的最佳实践。
基本上,我有一组用户申请了某个类,其中用户申请的类是一个数组。然而,同一个用户申请的每一个类都是它自己独立的索引。目标是将用户的所有类组合在一个索引(数组)中,而不是重复。
前任。
let someArray = [
{
name: 'Jim',
class: [
{
name: 'Sports Journalism',
field: 'Journalism'
}
]
},
{
name: 'Pam',
class: [
{
name: 'Fine Arts',
field: 'Art'
}
]
},
{
name: 'Jim',
class: [
{
name: 'Sales 101',
field: 'Business'
}
]
}
]
// something like this where we would want all of Jim's
// classes to be in one class array on just one index
解决方案
使用reduce
:
let someArray = [{name:'Jim',class:[{name:'Sports Journalism',field:'Journalism'}]},{name:'Pam',class:[{name:'Fine Arts',field:'Art'}]},{name:'Jim',class:[{name:'Sales 101',field:'Business'}]}];
const res = Object.values(someArray.reduce((acc, { name, class: [...classObj] }) => {
(acc[name] = acc[name] || { name, class: [] }).class.push(classObj);
return acc;
}, {}));
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
推荐阅读
- ruby - Sketchup Dynamic组件的位置和距离错误
- python - 从 Pelican 中的文件名自动生成标题
- javascript - 删除数组中的重复日期
- android - Qt 在 Android 10 上的共享内容问题
- c - 两个不同的警告,调试来自一系列构建尝试的消息
- c++ - 包含标题时防止多个#define
- c++11 - 带有 MinGW 的 Qt Creator '与操作员不匹配' 错误
- python - 重命名训练好的 Sklearn 分类器模式的目标变量的类名
- windows-subsystem-for-linux - 将 {WSL::Bash} 设置为默认 shell 会在 cmder 中引发错误
- javascript - 通过添加基于计数的索引来合并两个 javascripts 数组对象