首页 > 解决方案 > 如何从数组对象分组

问题描述

我使用代码形式“我正在寻找这样做的最佳方法。我有组:
数据

[
  {
     "date": "16/04/2020",
     "count": 0,
     "name": "A"
  },
  {
     "date": "16/04/2020",
     "count": 1,
     "name": "B"
  },
  {
     "date": "17/04/2020",
     "count": 0,
     "name": "B"
  }                     
  //...More.....
]
          
回答
{
    "date": "04/2020",
    "symtom": {
        "data": [
            {
                "date": "16/04/2020",
                "data": [
                    {
                        "name": "A",
                        "count": [
                            {
                                "date": "16/04/2020",
                                "count": 0,
                                "name": "A"
                            }
                        ]
                    },
{
                        "name": "B",
                        "count": [
                            {
                                "date": "16/04/2020",
                                "count": 1,
                                "name": "B"
                            }
                        ]
                    },
                    //...More.....
                ]
            },
            {
                "date": "17/04/2020",
                "data": [
                    {
                        "name": "B",
                        "count": [
                            {
                                "date": "17/04/2020",
                                "count": 0,
                                "name": "B"
                            }
                        ]
                    },
                    //...More.....
                ]
            }
        ]
    }
}

我可以修复代码并获得所需的答案吗?
代码 :

const items = [
  {
    tab: 'Results',
    section: '2017',
    title: 'Full year Results',
    description: 'Something here',
  },
    {
    tab: 'Results',
    section: '2017',
    title: 'Half year Results',
    description: 'Something here',
  },
    {
    tab: 'Reports',
    section: 'Marketing',
    title: 'First Report',
    description: 'Something here',
  }
];

function groupAndMap(items, itemKey, childKey, predic){
    return _.map(_.groupBy(items,itemKey), (obj,key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
}

var result = groupAndMap(items,"tab","sections", 
                   arr => groupAndMap(arr,"section", "items"));


console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

参考:对象的组数组嵌套了一些具有特定名称的键


但我想有这个答案(答案):

{
    "date": "04/2020",
    "symtom": {
        "data": [
            {
                "date": "16/04/2020",
                "data": [
                    {
                        "name": "A",
                        "count":  0,
                    },
                    {
                        "name": "B",
                        "count":  1,
                    },
                    //...More.....
                ]
            },
            {
                "date": "17/04/2020",
                "data": [
                    {
                        "name": "B",
                        "count":0,
                    },
                    //...More.....
                ]
            }
        ]
    }
}
谢谢!

标签: javascriptarraysobjectlodash

解决方案


我是一个初学者,但看起来你希望 system.data.data = 一个对象数组,键为 name:str 和 count:number 但你将整个对象应用到 count 所以键 count:{name:A ,计数:0,日期:等}。

我真的无法遵循您分离数据的功能......但是您应该做的就是当 count 发送对象以引用时,只需执行像 object.count 这样的点符号即可以您的方式访问数字与对象会产生预期的效果。希望这就是你要问的。


推荐阅读