【问题标题】:Array of object : value as key of the array? [duplicate]对象数组:值作为数组的键? [复制]
【发布时间】:2018-06-15 11:04:45
【问题描述】:

我有一个如下的对象数组;

{
    'data': [{
            value: 1000,
            year: 1990
        },
        {
            value: 1001,
            year: 1990
        },
        {
            value: 1002,
            year: 1990
        },
        {
            value: 1003,
            year: 1991
        },
        {
            value: 1004,
            year: 1991
        }
    ]
}

我想将其转换为如下所示的对象

{
    '1990': [{
            value: 1000,
            year: 1990
        },
        {
            value: 1001,
            year: 1990
        },
        {
            value: 1002,
            year: 1990
        }],

    '1991':[{
            value: 1003,
            year: 1991
        },
        {
            value: 1004,
            year: 1991
        }
    ]
}

有没有办法在 Javascript 或 Angular 4 中做同样的事情?

【问题讨论】:

  • 你真的应该给出一些你尝试过的代码,否则你不会学,我们不是来做你的功课的

标签: javascript angularjs javascript-objects


【解决方案1】:

使用Array#reduce 函数遍历每个项目并检查 accumulate 对象 是否不包含具有该键的属性,添加它,为其分配一个数组,然后将项目推入其中.如果包含,只需推送该项目。

const data = [{
            value: 1000,
            year: 1990
        },
        {
            value: 1001,
            year: 1990
        },
        {
            value: 1002,
            year: 1990
        },
        {
            value: 1003,
            year: 1991
        },
        {
            value: 1004,
            year: 1991
        }
    ];
    
const mapped = data.reduce((acc, item) => {
   
   if(!acc.hasOwnProperty(item.year)) {
      acc[item.year] = [];
   }
   
   acc[item.year].push(item);
   
   return acc;
    
}, {});

console.log(mapped);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多