由于设置在Javascript是能够采取对象,包括数组,我如何找到一个数组列表中的集合的存在?
我尝试了以下代码:
var sello = new Set();
sello.add(["a","b"])
console.log(sello.has(["a","b"])) // outputs false
我在假设
塞洛。有([“a”,“b”])
由于我在集合sello
中添加了精确的数组,所以应该输出true。我是否遗漏了一些虚假的事实或任何逻辑错误?
注:
>
我不希望只匹配字符“a”和/或
“b”
,我希望匹配整个数组[“a”,“b”]
。
我正在寻找匹配阵列的方法。我只需要内容相同,元素的顺序不必相同。
在JavaScript中,数组是对象,没有两个单独的对象被认为是相等的。
MDN对标准对象显示了相同的错误:
var set1 = new Set();
var obj1 = {'key1': 1};
set1.add(obj1);
set1.has(obj1); // returns true
set1.has({'key1': 1}); // returns false because they are different object references
let sello = new Set();
let myArray = ["a","b"];
sello.add(myArray);
console.log(sello.has(myArray)); // outputs true
您试图做的事情不会起作用,因为在Javascript中,您无法比较这样的数组,即使它们具有相同的值。这是因为数组是引用类型,而不是值类型,对于引用类型,Javascript根据它们是否引用同一对象(即内存中的同一位置)来确定它们是否相等。例如,试一下:
console.log(['a','b'] == ['a','b']); // false
尽管具有相同的值,但每个数组都是一个新的引用,因此它们彼此不相等。
相比之下,下面代码中的比较确实涉及在等式两侧引用相同对象的数组:
let a = ['a','b'];
console.log(a == a); // true
因此:
let sello = new Set();
sello.add(a);
console.log(sello.has(a)); // true
为了解决这个问题,您需要创建一个函数,根据数组的值比较数组。您可以首先检查数组是否具有相同的长度。如果没有,那么它们就不相等。然后您可以遍历每个项目,看看是否有任何给定位置的不同。如果是,它们不相等。否则,假设您处理的是一个基元值的平面数组(没有引用类型的嵌套对象),那么数组是相等的。这是我在下面的“平等”中做的:
function isEqual(x,y) {
if (x.length != y.length)
return false;
for (let i in x)
if (x[i] != y[i])
return false;
return true;
}
如果愿意,可以进行测试:
console.log(isEqual(['a','b'],['a','b'])); // true
现在,不幸的是,Set.has()
不接受函数,所以我们不能将它与isEqu
一起使用。但是您可以循环使用集合的值。如果目标是创建一行,我发现最好的方法是将集合转换为数组,并使用一些
方法。一些
接受一个计算每行的函数,如果它对任何行返回true,则结果为true,否则为false。
console.log(
[...sello].some(item => isEqual(item, ['a','b']))
);
// true
问题内容: 我需要获取数组的所有可能的子集,其中至少要包含2个项目,而最大未知数。有人可以帮助我一点吗? 说我有这个… …我怎么得到这个? 问题答案: 窃取此JavaScript组合生成器后,我添加了一个参数以提供最小长度,从而, 要使用,提供一个数组以及所需的最小子集长度, 输出是
假设有几个数组: 我需要找出所有可能的元素集合(1,2,3,4,5...)中的每一个在至少两个阵列(A,B,C....)并以下列方式显示它们: 实际输入是包含字符串的文件。可能有数千个文件,每个文件可能包含一百多个密钥字符串。 我尝试了下面的方法:首先,我通过比较所有可能的数组对来生成元素集。然后,我试图通过使用逻辑生成其他集合——元素集合的交集在数组集合的并集中很常见。像这样: 从上面我们可以得
这里是我尝试的代码,我成功地获得了所有集合的名称,但当我搜索特定的字段时,它不起作用,也没有给我任何错误。 该代码没有错误,也没有警告。
我有一个集合,每个用户都有自己的文档。现在,我想创建一个子集合来存储与特定用户相关的更多数据。 到目前为止,我的代码如下所示: 如何将数据存储在子集合中? 编辑我创建了一个新的保存函数,但firestore创建了一个名为“uid”的新文档,而不是使用当前uid将数据存储在文档的子集合中。如何解决这个问题?
我在MonoDB集合中有100k个文档,有20k个文档/记录。我想查找该特定文档使用的内存。 请帮助我在MongoDB控制台中查找内存大小(MB)。
问题内容: 这里是问题:我有一个元组列表(也可以根据需要设置)。例如: 我想找到一个清单 因为一旦将所有集合放在一起,交集就不会为空。 举个例子 结果应该是 希望问题解决。那么,如果有的话,在python中最优雅的方法是什么? 干杯 问题答案: 这些是图形的 连接组件 ,可以使用诸如的图形库找到。对于第二个示例: