arrays - 将数据库中的列表分成多个部分(React)
问题描述
我目前正在努力解决这个问题。希望你能帮助我:)
数据是从数据库中选择的,它返回结构如下的对象:
object = {
id: 4,
name: "Banana",
idParent: 1
}
idParent 将是产品的部分。
有很多产品和很多部分,所以很简单
const sectionOne = [];
ObjectList.map(e => {
if(e.idParent === 1) {
sectionOne.push(e);
}
})
可能是错误的,因为将来应该可以添加其他 idParents,并且在这种情况下代码不应该需要一些返工。
假设有 30 个对象,10 个 idParent = 1,15 个 idParent = 2,最后 5 个 idParent = 3。
如何在不为每个部分创建变量的情况下将整个列表分成这些部分?
谢谢您的帮助 :)
解决方案
我相信您在这里需要的是按 .map
对列表的值进行分组idParent
。
例子:
const objectList = [{
id: 4,
name: "Banana",
idParent: 1
},
{
id: 3,
name: "apple",
idParent: 2
},
{
id: 5,
name: "orange",
idParent: 2
}];
const groupBy = (array, key) => {
return array.reduce((accumlator, value) => {
(accumlator[value[key]] = accumlator[value[key]] || []).push(value);
return accumlator;
}, new Map());
};
const resultMap = groupBy(objectList, "idParent");
console.log(resultMap);
enter code here
地图中的子数组也可以像这样访问:
const groupWihtIdParen1 = resultMap[1];
// or like this
const groupWithIdParent2 = resultMap.get(2);
``
推荐阅读
- javascript - 在 Javascript 中使用“this”作为函数应用
- javascript - 用于 JavaScript 中任何内容的 Setter
- r - 仅使用 geom_areas 更改 ggplot2 中的图例颜色
- python - 是否有一种更简洁的方法可以根据字符串中的特定子字符串获取多个变量的平均值
- openjpa - 无法从命令行运行 openjpa 工具
- reactjs - 反应映射每个孩子并为每个孩子添加css样式
- php - 在php中对列表进行分页
- android - 从应用程序的进程中删除 GmsBoundBrokerService
- sql - 如果sql中的所有条件都满足,如何选择记录
- outlook - Outlook vsto如何为listviewItem添加宽度