javascript - 过滤和组合具有相同属性的对象数组中的索引

标签 javascript arrays object ecmascript-6 filter

试图找出在 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; }

关于javascript - 过滤和组合具有相同属性的对象数组中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56168416/

相关文章:

javascript - 使用 jQuery 更改背景时,链接会丢失其 css background-color 悬停属性

arrays - Excel vba : Property let procedure not defined and property get procedure did not return an object

python - 使用 3 个索引对 4 维数组进行切片时会发生什么?

javascript - JavaScript 中的归约函数

java - Java 有检查对象类型的方法吗?

c# - 是将要从 main() 调用的所有方法声明为静态的还是创建一个包含包括 main 在内的所有方法的类的对象更好?

javascript - 将贝塞尔曲线分成相等的两半

javascript - 如何根据 jQuery 中的复选框选择向表添加和删除 <tr>

c# - ASP.Net MVC 5 图片上传到文件夹

c++ - 类 'FileIO' 具有非法的零大小数组;多个字符字符串作为成员数据问题