如何删除子数组中的重复项?

时间:2018-12-15 12:49:32

标签: javascript arrays

这不是重复的!上面的链接没有显示如何通过第三个子数组的索引删除所有其他子数组值(请参见预期的数组)。

此代码查找重复项:

    var array = [];
    
    array[0] = [0, "1:7001", "1:7002", "1:7003", "1:7004", "1:7005"];
    array[1] = [1, "1:8001", "1:8002", "1:8003", "1:8004", "1:8005"];
    array[2] = ["asw", 32884789084, 32919691801, 32919691801, 32919691801, 32857764298];
    
    var dup = array[2].filter((v, i, a) => a.indexOf(v) !== i);
    
    console.log(dup);

但是我不知道如何删除子数组中的元素。预期的数组应如下所示:

[0, "1:7001", "1:7002", "1:7005"]; 
[1, "1:8001", "1:8002", "1:8005"];
["asw", 32884789084, 32919691801, 32857764298];

1 个答案:

答案 0 :(得分:2)

您可以在mapSet的帮助下完成此操作

所以在这里使用map来迭代数组变量的每个元素。而不是对每个子数组进行设置(这意味着它将只有唯一的项)。在返回之前,我正在使用扩展运算符进行结构分解。

var array = [];
    
    array[0] = [0, "1:7001", "1:7002", "1:7003", "1:7004", "1:7005"];
    array[1] = [1, "1:8001", "1:8002", "1:8003", "1:8004", "1:8005"];
    array[2] = ["asw", 32884789084, 32919691801, 32919691801, 32919691801, 32857764298];
    
    
    var dup = array.map(e=>[...new Set(e)])
    
    console.log(dup);

如果要从基于第3个子数组的其他子数组中删除元素,则可以这样做。

var array = [];
     
array[0] = [0, "1:7001", "1:7002", "1:7003", "1:7004", "1:7005"];
array[1] = [1, "1:8001", "1:8002", "1:8003", "1:8004", "1:8005"];
array[2] = ["asw", 32884789084, 32919691801, 32919691801, 32919691801, 32857764298];
        
let op = array.map((e,ind,a)=>{
  return e.filter((el,i)=>{
    return  i == 0 ? true : a[2][i] !== a[2][i-1]
  })
})
        
        console.log(op);