javascript:如何删除数组数组中的重复数组

BAE*_*BAE 8 javascript

输入:

[[-1,-1,2],[-1,0,1],[-1,-1,2],[-1,0,1],[-1,-1,2],[-1,0,1],[-1,0,1]]
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

[[-1,-1,2],[-1,0,1]]
Run Code Online (Sandbox Code Playgroud)

任何其他的想法,除了这一个

谢谢

Ber*_*rgi 11

你不会真正解决数组的字符串化问题,因为这是通过值比较它们的最简单(而且速度相当快)的方法.所以我会去

Array.from(new Set(input.map(JSON.stringify)), JSON.parse)
Run Code Online (Sandbox Code Playgroud)

另请参阅从JavaScript数组中删除重复项以获取其他方法,但其中大多数方法都需要两个值进行比较===.

  • 虽然我同意这可行,但我担心“JSON.stringify()”将从“.map()”收到的第二个和第三个参数在某些实现中干扰它,因为第二个参数应该是可以是“null”或函数,第三个参数应该是数字或字符串。 (2认同)

JMS*_*786 5

已经有一个很好的实用程序,试试Lodash,它的功能之一是 _.uniqWith,使用该功能您可以执行以下操作。

<script src="/path/to/lodash.js"></script>
<script>
    var aa = [[-1,-1,2],[-1,0,1],[-1,-1,2],[-1,0,1],[-1,-1,2],[-1,0,1],[-1,0,1]];
    console.log(aa);
    console.log(_.uniqWith(aa,_.isEqual));
</script>
Run Code Online (Sandbox Code Playgroud)


Kam*_*ski 5

魔法

d.filter(( t={}, a=> !(t[a]=a in t) ));
Run Code Online (Sandbox Code Playgroud)

我假设您的输入数据在array中d在这里解释。

d.filter(( t={}, a=> !(t[a]=a in t) ));
Run Code Online (Sandbox Code Playgroud)