如何按月和年对数组进行分组 React Native

时间:2021-02-18 04:21:21

标签: react-native

我有一个这样的 json 响应:

{
    "result": [
        {
            "id": 2984,
            "amount": 5000000,
            "account": "money",
            "trade_no": "2121683414670617655",
            "type": 0,
            "for_id": 0,
            "created_at": "2021-02-16 20:50:14",
            "payment_method": 0,
            "status": 1
        },
        {
            "id": 2999,
            "amount": -450000,
            "account": "money",
            "trade_no": "212173166272246C118",
            "type": 5,
            "for_id": "2021021760479",
            "created_at": "2021-01-17 10:14:22",
            "payment_method": "0",
            "status": 1
        },
        
    ],
    "code": 200,
    "description": "OK"
}

然后我想按月和年对 api 进行分组,如下所示:

enter image description here

请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您可以使用 lodash 中的 groupBy 方法。

var grouped = _.groupBy(result, function(item) {
    return item.created_at.substring(0,7);
});

这将为您提供以下格式的数据:

{
    "2021-02": [
        {
            "id": 2984,
            "amount": 5000000,
            "account": "money",
            "trade_no": "2121683414670617655",
            "type": 0,
            "for_id": 0,
            "created_at": "2021-02-16 20:50:14",
            "payment_method": 0,
            "status": 1
        }
    ],
    "2021-01": [
        {
            "id": 2999,
            "amount": -450000,
            "account": "money",
            "trade_no": "212173166272246C118",
            "type": 5,
            "for_id": "2021021760479",
            "created_at": "2021-01-17 10:14:22",
            "payment_method": "0",
            "status": 1
        }
    ]
}

在渲染数据时,您可以使用这样的 moment 将 Year-Month 键格式化为字符串,

moment('2021-01', 'YYYY-MM').format('MMMM YYYY');