告诉我它是否可以用来Set
只留下唯一的数组
那些。所以[[1, 2, 3], [1, 3, 4], [1, 2, 3], [1, 2, 3]]
只有[[1, 2, 3], [1, 3, 4]]
还是有其他方法可以做到这一点?
我不想通过在数组中搜索每个元素
告诉我它是否可以用来Set
只留下唯一的数组
那些。所以[[1, 2, 3], [1, 3, 4], [1, 2, 3], [1, 2, 3]]
只有[[1, 2, 3], [1, 3, 4]]
还是有其他方法可以做到这一点?
我不想通过在数组中搜索每个元素
我们将数组保存为字符串,Set可以正确处理字符串,我们将过滤后的字符串转换为数组:
Set
存储传递给它的对象而不重复。不幸的是,相同的数组在 JavaScript 中并不相等:所以对于
Set
相同的数组看起来不同。不要急着骂语言——在 Python 中,set
根本无法放置数组。这本书的页边空白太小,无法解释原因。没错,在 Python 中有元组(set
完美地插入其中),但在 JavaScript 中却没有(在这里你可以有点争吵)。由于数组是不可能的,我们将它们转换为字符串。它
Set
适用于字符串:从语言的角度来看,相等的字符串实际上是相等的。所提出的方法有一个缺点:不是数组本身被过滤,而是它们的副本。这并不总是很方便,但您可以使用Map解决它。显示已创建
<строка>: <массив>
。键不重复,原始数组进入结果。我们还节省了JSON.parse
:不。插入数组时,会在 Set 中设置一个引用,并且还会检查它是否重复。
你必须写这样的东西:
如果在 Set 的输入处第一个参数是一个数组,那么它已经从它创建了一个新的 Set,并且不会触及其余部分。
例子:
如果通过 方法添加数组
add
,则 Set 将数组“转换”为Symbol(简单地说:一个唯一的对象),也就是说,对于 Set,这将是两个唯一的数组(Symbol),因此它不会触及它们。例子:
要检查数组并删除非唯一数组,您可以进行简单检查。
编码:
如果可以为数组分配唯一值,则可以使用 map: