【发布时间】:2017-12-14 18:52:53
【问题描述】:
假设我有数组 1
const arr1 = [[45, 63],[89],[90]]
和数组 2
const arr2 = [45, 63]
要检查 arr2 或 arr2 中的值是否存在于 arr1 中,执行下一个函数很容易
private contains(arr1, opts) {
const stringifiedOpts = JSON.stringify(opts);
return arr1.some(item => JSON.stringify(item) === stringifiedOpts);
}
在这种情况下 contains() 函数将返回 true。
这是第一个最简单的情况。 现在让我们这么说:
arr2 = [45, 63, 90]
function contains() 将返回 false,因为 arr1 不包含 [45, 63, 90] 但包含 [90] 作为不同的数组。在这种情况下,函数应该返回 true,因为 arr1 中存在来自 arr2 的 90
我的问题是我应该在该函数中使用什么样的逻辑来在以下情况下返回 true:
arr2 = [45, 63, 90] 或
arr2 = [45, 90] 或
arr2 = [63, 89] 或
arr2 = [63, 90] 或
arr2 = [81, 20, 90] 或
arr2 = [25, 60, 89]
因为 90 或 89 存在于 arr1 但作为不同的数组
欢迎大家在这里提供任何帮助/想法/解决方案。谢谢!
【问题讨论】:
-
Flatten the array 然后简单地搜索它。
-
为什么
[81, 20, 90]和[25, 60, 89]应该返回true。arr1没有任何值包含20或81或25或60 -
@Titus 但它包含 90 或 89
-
我想我误解了描述。我认为该函数只应在
arr1包含arr2的所有值时返回true,即使它们位于单独的数组中。
标签: javascript arrays ecmascript-6 filtering