使用javascript合并具有相似值的子数组

时间:2018-03-14 07:10:57

标签: javascript arrays

var obj = [[0,0],[0,1],[1,0],[1,1],[2,2]];

需要输出Output = [[0,0], [1,1], [2,2]];

子数组中存在需要合并的类似值。

1 个答案:

答案 0 :(得分:0)

您可以使用Set获取唯一值,然后将数组与多个唯一项一起使用,并将其与仅一个唯一项连接。

var array = [[0, 0], [0, 1], [1, 0], [1, 1], [2, 2]],
    unique = new Set(array.reduce((r, a) => r.concat(a), [])),
    result = array
        .filter(a => {
            if (a[0] !== a[1] && a.every(b => unique.has(b))) {
                a.forEach(b => unique.delete(b));
                return true;
            }
        })
        .concat(array.filter(a => {
            if (a.some(b => unique.has(b))) {
                a.forEach(b => unique.delete(b));
                return true;
            }
        }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }