gpt4 book ai didi

javascript - 使用 underscore.js 在 javascript 中分组/计数

转载 作者:搜寻专家 更新时间:2023-11-01 04:45:55 24 4
gpt4 key购买 nike

我是 javascript(和 Stack Overflow)的新手,我遇到了一个我似乎无法解决的问题。我正在尝试生成一个简单的饼图,显示数据中每个技术值的项目数。这是我正在处理的数据类型:

  • [项目 1,Java]
  • [项目 2,Excel]
  • [Project3, SAS]
  • [Project4, Java]

上例中的馅饼比例为 2:1:1。

我的代码的第一部分加载数据并将其推送到包含 [project, tech] 的数组“techArray”。这部分工作正常 - 我已经在代码的简化版本中对其进行了验证。

然后我想对数组“techArray”进行分组并计算每个技术的实例。为此,我使用了 Underscore 库,如下所示:

var chartData = [];
var techData = _.groupBy(techArray, 'tech');
_.each(techData, function(row) {
var techCount = row.length;
chartData = push( {
name: row[0].tech,
y: techCount
});
});

脚本然后使用 highcharts 呈现 chartData 数组。同样,我已验证此部分使用简化(未分组)版本有效。

上面概述的分组/计数步骤一定存在问题,因为我没有看到任何输出,但我就是找不到输出位置。我的解决方案基于以下工作示例:Worked example .

如果有人能发现我所写内容中的错误,或提出另一种对数组进行分组的方法,我将不胜感激。这看起来应该是一项比事实证明更简单的任务。

最佳答案

countBy可以用来代替 groupBy:

var techArray = [
{ project: 'Project1', tech: 'Java'},
{ project: 'Project2', tech: 'Excel'},
{ project: 'Project3', tech: 'SAS'},
{ project: 'Project4', tech: 'Java'},
];

var counts = _.countBy(techArray,'tech');

这将返回一个对象,其中技术作为属性,它们的值作为计数:

{ Java: 2, Excel: 1, SAS: 1 }

要以 highcharts 的形式获取数据,请使用 map 而不是 each:

var data = _.map(counts, function(value, key){
return {
name: key,
y: value
};
});

关于javascript - 使用 underscore.js 在 javascript 中分组/计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25119323/

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