javascript - 如何在数组 Javascript 中正确存储和格式化数据

标签 javascript jquery arrays

我想使用 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() 函数与循环一起使用以遍历每个索引,但我似乎无法弄清楚如何去做。

最佳答案

试试这个。您将在数组 rLabelsrValues 中获取格式化数据。

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/

相关文章:

javascript - HTML:有没有办法让用户输入他们的输入,但也有一个下拉选择菜单?

javascript - 如何将事件附加到弹出父项的父项?

javascript - 将按钮添加到循环生成的表中的表行

javascript - 寻求有关如何将可排序网格合并到 Google 电子表格中的总体指导

javascript - 多次使用 getElementByID 与对象文字的有效方法?

javascript - 在 JavaScript/jQuery 中向 API 发出 POST 请求

javascript - TinyMCE 编辑器仅显示在第一个元素上

javascript - 如何跟踪用户点击浏览器上的后退按钮

javascript - 使用Meteor Spotify API根据单词搜索返回专辑列表,需要为列表中的每个专辑拉入轨道

java - 数组大小计数——Android、Java