繁体   English   中英

如何合并数组数组

[英]How to merge array of arrays

我正在尝试使用 javascript 在一个数组中合并两个数组,但我没有使用concat方法获得确切的输出,任何人都可以帮助我

  var v1 = [[0, 1],[1, 5],[2,5]];
  var v2 = [[0,5],[1,6],[2,8]];
//output
  var result=[[0,1,5],[1,5,6],[2,5,8]];

在其中之一上使用map() 使用相应的索引将其与其他人连接。 然后使用Set删除重复项

 var v1 = [[0, 1],[1, 5],[2,5]]; var v2 = [[0,5],[1,6],[2,8]]; const res = v1.map((x, i) => [...new Set([...x, ...v2[i]])]); console.log(res)

连接数组并过滤数组中的重复项。 这是假设 v1 和 v2 的长度相同。

 var v1 = [[0, 1],[1, 5],[2,5]]; var v2 = [[0,5],[1,6],[2,8]]; let result = [] for (let i = 0 ; i < v1.length; i++) { let d = v1[i].concat(v2[i]) result.push(d.filter((a, b) => d.indexOf(a) === b)) } console.log(result) //var result=[[0,1,5],[1,5,6],[2,5,8]];

只是像这样的东西,还没有真正编译它,但这就是想法。

    let length = (v1.length > v2.length) ? v1.length : v2.length; 
    for (let i = 0 ; i < length; i++) {

          if (v2[i] && v1[i]) {
            let d = v1[i].concat(v2[i])
            result.push(d.filter((a, b) => d.indexOf(a) === b))
          } else {
            if (v1.length > v2.length) {
      result.push(v1[i].filter((a, b) => v1[i].indexOf(a) === b)); //remove v1 dup 
} else {
  result.push(v2[i].filter((a, b) => v2[i].indexOf(a) === b)); //remove v2 dup 
}

          }

        }
        console.log(result)

我相信这更简单,更容易阅读:

let a = [[0, 1],[1, 5],[2,5]];
let b = [[0,5],[1,6],[2,8]];

b.forEach(item => a.push(item));

// Result :
console.log(JSON.stringify(a)); // a = [[0,1],[1,5],[2,5],[0,5],[1,6],[2,8]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM