首页 > 解决方案 > 检查对象数组是否包含来自其他对象数组的值

问题描述

我有以下对象数组: 在此处输入图像描述

我需要检查这两个数组是否具有相同的begin属性。在这种情况下,这在三个对象中似乎是正确的。到目前为止,我已经尝试过这段代码,但没有运气(input.value成为第一个数组)。

const found = input.value.some((item) => item.begin === filtered.filter((time) => time.begin));

任何想法我怎样才能做到这一点?先感谢您。

标签: javascriptarrays

解决方案


您可以在没有更多迭代的情况下对集合进行检查Setfiltered

其中的大 O是 O(n),因为创建集合的 O(n) 和另一个O(n)检查的 O(n),因为添加两个n你得到 O(n)。

一种方法是因为嵌套结构 O(n 2 )。

const
    filteredSet = new Set(filtered.map(({ begin }) => begin)),
    found = input.value.some(({ begin }) => filteredSet.has(begin));

推荐阅读