将两个日期系列合并为一个
Merge two dates series into one
我需要在Dygraph.js中做一些图表,有多个系列。
例如,我有这个数据集:
array1 = [ ['2016-03-16', 10,]
['2016-03-17', 20,]
['2016-03-19', 20,]
['2016-03-20', 15,]
];
array2 = [ ['2016-03-16', 30,]
['2016-03-18', 50,]
['2016-03-20', 30,]
];
我想将此数组合并为一个:
merged = [ ['2016-03-16', 10, 30]
['2016-03-17', 20, null]
['2016-03-18', null, 50]
['2016-03-19', 20, null]
['2016-03-20', 15, 30,]
];
Ofcorse 日期采用更复杂的格式:YYYY-MM-DD HH:mm:ss
。我正在使用时刻.js进行日期操作。
如何以最快的方式合并这些数组?
适用于任何系列计数的解决方案。
var array1 = [['2016-03-16', 10], ['2016-03-17', 20], ['2016-03-19', 20], ['2016-03-20', 15]],
array2 = [['2016-03-16', 30], ['2016-03-18', 50], ['2016-03-20', 30]],
merged = function (array) {
var o = {}, r = [];
array.forEach(function (a, i) {
a.forEach(function (b) {
if (!o[b[0]]) {
o[b[0]] = Array.apply(null, { length: array.length + 1}).map(function () { return null; });
o[b[0]][0] = b[0];
r.push(o[b[0]]);
}
o[b[0]][i + 1] = b[1];
});
});
return r.sort(function (a, b) { return a[0].localeCompare(b[0]); });
}([array1, array2]);
document.write('<pre>' + JSON.stringify(merged, 0, 4) + '</pre>');
这样做:
array1 = [ ['2016-03-16', 10,],
['2016-03-17', 20,],
['2016-03-19', 20,],
['2016-03-20', 15,]
];
array2 = [ ['2016-03-16', 30,],
['2016-03-18', 50,],
['2016-03-20', 30,]
];
//get the bigger array
var src = array1.length > array2.length ? array1 : array2;
//get the smaller array
var dest = array1.length > array2.length ? array2 : array1;
//iterate the bigger array
var final = src.map(function(array){
var date = array[0];
//find in smaller array
var filtered = dest.filter(function(d){
return d[0] == date;
});
var thirdData= null;
if (filtered.length > 0){
//iff filtered get the first record
thirdData = filtered[0][1]
}
return [date, array[1], thirdData]
})
console.log(final);
工作代码在这里
相关文章:
- 将两个Json提要合并为一个,并按时间排序
- 将javascript对象(属性+值)合并到一个对象中
- jQuery将代码合并为一个函数
- 将多个jquery函数合并为一个
- 将嵌套数组的元素合并到一个大数组中
- MongoDB聚合将两个不同的字段合并为一个并获取计数
- 如何将多个 Blender JSON 模型合并到一个 Three.js Object3D 对象中
- 在angularJS中合并来自一个服务的两个数组
- 如何使用ES6将两个具有函数的对象合并为一个新对象
- 将文档的MongoDB字段合并到一个文档中
- 将两个图像合并为一个,并使用javascript进行溢出隐藏
- 将值和属性从一个对象合并到另一个对象
- 将两个云代码函数合并为一个函数
- 如何在Three.JS中将两个BufferGeometry合并为一个BufferGeometrics
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- 如何将两个json对象合并为一个json
- 将json作为子文档合并到另一个json中
- 创建大量的js文件或者合并为一个文件是一种好的做法吗
- 将CSS和JavaScript合并到一个文件中并进行链接
- 我如何隐藏一个列在html表中,它有一个合并的标题