在我开始之前,是的,我疯狂地谷歌搜索并阅读了许多SO上的答案,但我仍然无法完成需要完成的任务,所以我正在寻求帮助。
我有一个问题,我无法解决。我必须在Google注释图表中显示一些数据。我得到的数据格式如下:
var arr1 = [{
timestamp: "1505735024496", value1: 2
},
{
timestamp: "1505815355920", value1: 5
},
.....
]
var arr2 = [{
timestamp: "1505383687151", value2: 1
},
{
timestamp: "1505485417374", value2: 3
},
.....
]
最终目标是将这两个对象数组合并成一个像这样的对象数组:
var final = [
[new Date(YYYY, DD, MM), value1, value2],
[new Date(YYYY, DD, MM), value1, value2],
...
]
根据该特定图表的Google Charts文档上的说明操作。
我只能将时间戳转换为相应日期的完整日期,但这又给了我一个对象数组,在这个数组中,我只是将时间戳转换为日期,没有太多变化。
var indexesArr1 = arr1.map(function (obj) {
return obj.timestamp;
});
var arr1New = arr1.map(function (obj) {
var index = indexesArr1.indexOf(obj.timestamp);
return { date: moment(parseInt(obj.timestamp)).format('YYYY, MM, DD'), value1: index > -1 ? arr1[index].value : obj.value };
});
真正的问题在于arr1和arr2不必是相同的长度(大部分情况下可能不一样),由于此图表将显示随时间变化的数据,因此重要的是用value1和value2填充每个日期,即使其中一个值可能没有明确返回该特定日期。还有一件事就是删除所有重复日期的实例,但保留最后一个,因为它代表该特定日期的最后一个记录值。
我使用Moment.js轻松地将时间戳转换为所需格式('YYYY, DD, MM'),但我无法正确进行所有数据操作。
允许使用Underscore.js,因为我知道它有一些非常好的实用程序函数来解决这些类型的问题,但我无法解决它(说实话,我没有那么多经验),我知道这里有比我更有知识的人,所以我正在寻求帮助。
提前感谢您抽出时间回答这个问题。
P.S. 我会链接到Moment.js,但我目前没有足够的声望发布超过2个链接。