gpt4 book ai didi

javascript - normalizr - 如何用于基于属性的分组

转载 作者:行者123 更新时间:2023-11-29 19:00:19 25 4
gpt4 key购买 nike

我需要重组来自服务器 API 的数据以在我的客户端应用程序中使用,我开始了解 normalizr .如果可能,我正在尝试使用这个库。

数据结构如下。

{
"history": [{
"_id": "5a09d7a48134664b58eb9ff7",
"created": "2017-11-13"
}, {
"_id": "5a09d79c8134664b58eb9ff6",
"created": "2017-11-13"
}, {
"_id": "5a09d7968134664b58eb9ff5",
"created": "2017-11-13"
}, {
"_id": "5a0349da81069a3754ac1a91",
"created": "2017-11-08"
}
]
}

我想根据“创建”对其进行分组,如下所示。

{
"history": {
"2017-11-13": [{
"_id": "5a09d7a48134664b58eb9ff7",
"created": "2017-11-13"
}, {
"_id": "5a09d79c8134664b58eb9ff6",
"created": "2017-11-13"
}, {
"_id": "5a09d7968134664b58eb9ff5",
"created": "2017-11-13"
}

],
"2017-11-08": [{
"_id": "5a0349da81069a3754ac1a91",
"created": "2017-11-08"
}
]
}
}

如何使用 normalizr 做到这一点?我知道我需要的只是重组数据,normalizr 是最好的选择吗?

最佳答案

您可以使用 ES6 版本通过以下函数完成此操作

function grouping (arr, key) {
return (arr || []).reduce((acc, x = {}) => ({
...acc,
[x[key]]: [...acc[x[key]] || [], x]
}), {})
}

它有两个参数,数组和用于分组的键

function grouping (arr, key) {
return (arr || []).reduce((acc, x = {}) => ({
...acc,
[x[key]]: [...acc[x[key]] || [], x]
}), {})
}

let history = [{
"_id": "5a09d7a48134664b58eb9ff7",
"created": "2017-11-13"
}, {
"_id": "5a09d79c8134664b58eb9ff6",
"created": "2017-11-13"
}, {
"_id": "5a09d7968134664b58eb9ff5",
"created": "2017-11-13"
}, {
"_id": "5a0349da81069a3754ac1a91",
"created": "2017-11-08"
}
];
console.log(grouping(history,'created'));

关于javascript - normalizr - 如何用于基于属性的分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47271892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com