【问题标题】:Grouping objects during retrieving data [closed]在检索数据期间对对象进行分组[关闭]
【发布时间】:2018-12-24 22:26:27
【问题描述】:

我有以下 firebase 数据库。

  {
      "orders" : [ null, {
        "date" : "2018-07-09 10:07:18",
        "item" : "apple",
        "price" : 30 },
        {
        "date" : "2018-06-09 10:07:18",
        "item" : "bread",
        "price" : 25 
        },
        {
        "date" : "2018-06-13 10:07:18",
        "item" : "milk",
        "price" : 25 
        },
        {
        "date" : "2018-07-05 10:07:18",
        "item" : "cheese",
        "price" : 50 
        }
       ]
    }

我想在 Vue 项目中检索数据,但我不知道如何。不同时间有订单,我想使用 groupByChild('date') 方法,但这会返回 4 个对象,因为日期是唯一的。我想在订单日期的月份中对订单进行分组。我如何将对象分组到 7-8.性格?

【问题讨论】:

    标签: javascript json firebase firebase-realtime-database vue.js


    【解决方案1】:

    可以取一部分ISO日期、年份、月份进行分组。

    var data = { orders: [null, { date: "2018-07-09 10:07:18", item: "apple", price: 30 }, { date: "2018-06-09 10:07:18", item: "bread", price: 25 }, { date: "2018-06-13 10:07:18", item: "milk", price: 25 }, { date: "2018-07-05 10:07:18", item: "cheese", price: 50 }] },
        groups = data.orders.reduce((r, o) => {
            var key;
            if (!o) {
                return r;
            }
            key = o.date.slice(0, 7);
            r[key] = r[key] || [];
            r[key].push(o);
            return r;    
        }, Object.create(null));
        
    console.log(groups);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

    • 谢谢!有用。让我问最后一个问题。如何过滤'2018-07'月份的数组?
    • 抱歉耽搁了,请使用data.orders.filter(o => o && o.date.startsWith('2018-07')) 之前检查对象。
    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多