【发布时间】:2015-04-27 22:12:29
【问题描述】:
使用 Javascript,我正在尝试将一些 JSON 数据转换为 Highcharts 基本折线图中使用的格式。
我必须从什么开始:
originalArray = [
['valueA', 1],
['valueA', 0],
['valueB', 9],
['valueB', 9],
['valueB', 3],
['valueC', 11]
]
以及我正在尝试使用上述内容创建的内容:
desiredArray = [{
name: 'valueA',
data: [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
}, {
name: 'valueB',
data: [0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0]
}, {
name: 'valueC',
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
}]
对于一些额外的上下文,originalArray[i][1] 中的 0-11 表示一个月(0 = 一月),desiredArray 是唯一名称的列表以及它们按月出现的计数。
到目前为止,我可以:
- 将数据转换为新的对象数组
- 对于
originalArray中的每个唯一名称- 在
desiredArray中新建对象,并设置name属性 - 添加一个包含空数组的
data属性
- 在
但后来我遇到了麻烦,不知道该怎么做:
- 循环通过
originalArray- 如果
originalArray中的名称与desiredArray中的名称匹配- 在匹配的
seriesArray[i].data数组中增加一个计数器,使用originalArray[i][1]的值作为索引(始终为0-11)。
- 在匹配的
- 如果
所以我问:
- 有什么好方法可以遍历我的
originalArray,匹配唯一值,然后仅对这些匹配项进行操作以推送到desiredArray。 - 在
desiredArray[i].data中增加计数器的最佳方法是什么?
我愿意使用库,例如 underscore.js。几天来一直在尝试解决这个问题,所以几乎所有东西都在 Javascript 的范围内。
【问题讨论】:
-
顺便说一句,你在desiredArray中的valueB条目中的计数是错误的,我认为......数据[3]中应该有一个1?
-
@SMcCrohan 不错,已更新
标签: javascript jquery arrays json highcharts