我想使用 Charts.js库并根据用户输入的内容在图表中显示数据。
现在我不太确定如何以正确的格式获取数据,以便我可以将 if 用于库。
目前,我在组合标签和值以使其与正确标签的正确索引相匹配时遇到问题。 我有一个表,其中包含两个值(一个月(指定为一月、二月、三月、四月等)和一个数值)
现在我需要合并出现两次的月份并添加与每个月关联的值。我真的不知道我应该为此使用 2d 数组还是 2 个数组。 例如
var labels = ["Jan 17", "Jan 17", "Feb 17", "Mar 17", "Mar 17"];
var values = [10,10,25,40,100];
成为
var newlabels = ["Jan 17", "Feb 17", "Mar 17"];
var newvalues = [20,25,140];
或二维数组:
var graphdata = [["Jan 17", 10],["Jan 17",10],["Feb 17",25],["Mar 17",40],["Mar 17",100]];
成为
var newgraphData =[["Jan 17", 20],["Feb 17",25],["Mar 17",140]];
两种方法都可以,但我不知道该用哪种。我也不太清楚如何使用 jQuery 选择器和 .map() 函数获取二维数组中的数据。
我正在考虑将 .map() 和 .reduce() 函数与循环一起使用以遍历每个索引,但我似乎无法弄清楚如何去做。
最佳答案
试试这个。您将在数组 rLabels
和 rValues
中获取格式化数据。
var labels = ["Jan 17", "Jan 17", "Feb 17", "Mar 17", "Mar 17"]
, values = [10, 10, 25, 40, 100]
, rLabels = []
, rValues = [];
for (var i = 0; i < labels.length; i++) {
var label = labels[i];
var ind = rLabels.indexOf(label);
if (ind == -1) {
rLabels.push(label);
rValues.push(values[i]);
} else {
rValues[ind] += values[i];
}
}
关于javascript - 如何在数组 Javascript 中正确存储和格式化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479087/