javascript - 标签系统从 ANY 到 ALL 的 bool 切换

标签 javascript boolean-logic

我有一个项目数组items[]。每个都有一个 bool 属性 filtered 和一个名为 tags[] 的数组属性。

我还有另一个数组:selected_tags

通过此循环,我可以根据所选标签过滤所有项目:

items.forEach(function (item) {

    if (selected_tags.length > 0)
        tag_filter = !selected_tags.some(tag => item.tags.includes(tag));

    // ... other_filter = something else...

    item.filtered = !(!tag_filter && !other_filter);

});

这适用于任何逻辑(如果所选标签中有任何标签,则显示该项目)。我想使用 ALL 逻辑来执行此操作(如果所有选定的标签都在项目标签中,则显示它)。

所以,很自然地,我想知道包含是否可以做这样的事情:

[1,2,3].includes([1,2,3])

[1,2,3].includes(1,2,3)

tag_filter = item.tags.includes(selected_tags);

但它给出了错误。

我可以在执行此操作的同时将其保留为一个简单的单行代码,如果经过过滤则返回 tag_filter = true ,如果没有则返回 false

最佳答案

您可以使用.every()而不是 .some()

例如:

[1,2,3].every(x => [1,2,3].includes(x))

此外,您还可以更改

item.filtered = !(!tag_filter && !other_filter)

item.filtered = tag_filter || other_filter

关于javascript - 标签系统从 ANY 到 ALL 的 bool 切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57874220/

相关文章:

javascript - 如何在 svg 之前也始终在前景中获取导航栏?

javascript - 并非所有行都在 ng-grid 中呈现

java - 有没有办法在 Java 中禁用短路评估?

lucene.net - Lucene.Net 支持 XOR bool 查询吗?

python - 定义类覆盖的问题 (__not__)

javascript - Angular 表,行中的复选框

java - 通过套接字在Java桌面应用程序和Java浏览器小程序之间建立通信

javascript - 减去浮点值给出负结果

c# - Microsoft 更喜欢 False 值?

optimization - 在评估数据绑定(bind)时, knockout 是否针对逻辑运算符进行优化?