【发布时间】:2021-06-30 08:33:16
【问题描述】:
我有一些条目,这些条目分配有一个类别,每个条目都有一个数值;
{
category: "cat1",
value: -100
}
这是我的条目^。我运行 Loadash GroupBy 来对所有类别进行分组。
const groups = _.groupBy(dataSource, (entry) => entry.category);
这个 sn-p 在这里返回如下:
{
"cat1": [
{
category: "cat1",
value: -100
},
{
category: "cat1",
value: +10
},
],
"cat2": [
{
category: "cat2",
value: -100
},
{
category: "cat2",
value: +40
},
//and so on...
}
键是类别名称。对象是相关条目。
我需要运行一个带有嵌入式 Reduce 的连续 Map,以通过每个条目的值的总和将数组减少为整数。
const categoryValues = _.map(groups, (element) => {
return {
categoryName: ???????,
//*I DONT KNOW WHAT GOES HERE ^,
//I NEED THE NAME OF THE CATEGORY TO BE HERE*
categoryValue: _.reduce(element,(acc, el) => el.value,0),
};
});
那是因为我的图形 api 需要他的数据集数组由像这样的对象组成:
{
"categoryName": "cat1", //*THIS IS MISSING*
"categoryValue": 999
}
如何访问每个数组的键名?我需要知道类别是如何命名的,以便图表显示其名称。
问号的地方需要写什么?
【问题讨论】:
-
尝试使用
JSON.stringify(data, null, "\t")并粘贴生成的对象,而不是提供 DevTools 的屏幕截图 -
试试
const categoryValues = _.map(groups, (element, name) => { return { categoryName: name, //I DONT KNOW WHAT GOES HERE, I NEED THE NAME OF THE CATEGORY TO BE HERE* categoryValue: _.reduce(element, (acc, el) => el.value, 0), }; }); -
将第二个参数也作为
name。它包含属性的名称 -
_.map(groups, (element, name) -
对象的静态方法。使用
Object.entries(groups).map(([categoryName, categoryValues]) => { ... })调用它。
标签: javascript dictionary object lodash javascript-objects