从另一个数组JavaScript中删除重复的数组

时间:2016-03-15 14:46:51

标签: javascript arrays nested duplicates

如何删除此数据结构中的重复数组?

enter image description here

我明白了:

    ["5", "26", 300],
    ["7", "10", 20],
    ["3", "4", 30],
    ["5", "2", 52],
    ["9", "5", 300],
    ["3", "4", 30],
    ["5", "2", 52],
    ["5", "26", 300],
    ["1", "27", 250]

使用:

var all = [].concat(jsonData['l'],jsonData['c'], jsonData['r']);                                    
for (e in all){
    console.log([all[e].source, all[e].target, Number(all[e].link)]);
}

我需要减少数据,删除重复的数组并将结果提供给sankey graf。 jsonData元素包含更多的数据和每个左侧,中间和右侧的结构有点不同。

解决: 我根据mmm的想法建立了自己的功能。

function dedupe(all) {
   var seen = [];
   var res = [];
   for (e in all){
       var temp = [all[e].source, all[e].target, Number(all[e].link)];
       if (seen.indexOf(temp.toString()) < 0) {
           seen.push(temp.toString());
           res.push(temp);
       }
   }
   return res;
}

Thans。

2 个答案:

答案 0 :(得分:3)

你可以filter他们:

&#13;
&#13;
var a = [[1, 2, 3], [1, 2, 3], [4, 5, 6], [4, 5, 6], ['foo']];
var tmp = [];

var b = a.filter(function (v) {
    if (tmp.indexOf(v.toString()) < 0) {
        tmp.push(v.toString());
        return v;
    }
});

console.log(b);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

this other reply 中,解决了将数组字符串化,并使用 Set 删除重复项的问题。应该简单多了

Array.from(new Set(jsonData.map(JSON.stringify)), JSON.parse)