我想合并oldData和newData。需要通过将日期排序为升序来显示输出。如果两者都有数据,请添加为[date,oldValue,New value]。如果newData中可用的数据只创建['2018-03-30',null,5]
var oldData = [ [ '2018-04-01', 10 ], [ '2018-04-02', 20 ], [ '2018-04-03', 30 ] ];
var newData = [ [ '2018-03-30', 5 ], [ '2018-03-31', 6 ], [ '2018-04-01', 22 ] ];
所需的输出是:
[ [ '2018-03-30', null, 5 ], [ '2018-03-31', null, 6 ], [ '2018-04-01', 10, 22 ] , [ '2018-04-02', 20, null ] , [ '2018-04-03', 30, null ] ];
请帮我在jquery / java-script中实现这个目的。
答案 0 :(得分:0)
我做了类似的事情:
let output = [];
oldData.map(e => output.push([new String(e[0]), e[1], null]));
for(const elem of newData) {
output.map(e => {
if(e[0] === elem[0]) {
e[2] = elem[1];
continue;
}
})
output.push([new String(elem[0]), null, elem[1]]);
}
您使用oldData
中的值创建一个新数组,使其处于所需的结构中(我是用户new String()
,以确保我不会复制引用 - 如果不需要则删除)。
然后循环遍历newData
的元素,看看ouptut
是否已有elem。与那个日期。
如果是,则将其中的null
更改为来自相应元素的数字
如果没有,你只需推送一个给定日期,空值和数字的新的。
请记住,只有当这些项目是唯一的时才能正常工作!