【问题标题】:Boolean operations on sets of arrays in JavaScriptJavaScript 中数组集的布尔运算
【发布时间】:2015-11-12 15:41:15
【问题描述】:

使用 ES6 集合,我可以这样做:

let ints = new Set([1,2,3])
console.log(ints.has(3))

它打印true,因为3 在集合中。

但是数组呢?例如

let coordinates = new Set([[1,1], [1,2], [2,0]])
console.log(coordinates.has([1,2]))

这打印出false

As you can see in this CodePen demo

那么,如果不首先将坐标转换为字符串(例如 ['1,1', '1,2', '2,0']),我如何才能像数组是可散列的一样处理数组中的数组?

【问题讨论】:

标签: javascript arrays ecmascript-6


【解决方案1】:

因为 Set 和 Map 实例基于 === 比较(NaN 除外),所以两个不同的数组永远不会比较相同,因此您的示例正确地导致 false。然而:

var a = [1, 1], b = [1, 2], c = [1, 3];
var s = new Set([a, b, c]);
console.log(s.has(a));

将打印true

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2014-12-11
    • 2020-08-22
    • 2021-07-14
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多