如何使用Jquery合并两个二维数组

时间:2018-04-10 18:02:00

标签: javascript arrays multidimensional-array array-merge

我想合并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中实现这个目的。

1 个答案:

答案 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更改为来自相应元素的数字 如果没有,你只需推送一个给定日期,空值和数字的新的。

请记住,只有当这些项目是唯一的时才能正常工作!