【发布时间】:2020-10-31 23:25:45
【问题描述】:
我正在构建一个“搜索引擎”,以便我的客户可以根据其类别和 ID 访问一些文档。为此,我过滤了所有可用的文档,因此我只显示与当前页面匹配的那些(它可以是新闻页面、财务页面、事件页面等)
我遇到了一个错误,幸运的是,我发现有一个我仍然不明白的区别......
案例 1 给我 113 个结果
const allDocuments = [{id: 1, ....}, {id: 2, ....}, {id: 3, ...}, ...]
const currentPageIds = [1, 2, 3]
const filteredDocuments = allDocuments.filter(document => {
// each document have one or more category ids
for(const categoryID of document.category_id) {
return currentPageIds.includes(categoryID)
}
})
案例 2 给我 134 个结果
const allDocuments = [{id: 1, ....}, {id: 2, ....}, {id: 3, ...}, ...]
const currentPageIds = [1, 2, 3]
const filteredDocuments = allDocuments.filter(document => {
// each document have one or more category ids
for(const categoryID of document.category_id) {
if(currentPageIds.includes(categoryID)) {
return true
}
}
})
据我了解,函数 includes() 应该返回一个布尔值,所以在我的示例中,它与在条件语句中返回 true 有何不同?
感谢您的帮助!
【问题讨论】:
-
请添加一些带有
category_id的数据。 -
你的第一个sn-p从
for(const categoryID of document.category_id) {的第一次迭代立即returns,只检查第一个类别是否包含在currentPageIds中,而忽略其他类别。 -
@NinaScholz 数据在这里无关紧要,因为我的问题是关于直接返回函数 include() 或使用条件语句然后返回 true 的预期行为
-
第一个 on 只循环一次。对于每个
document。 -
@Bergi 哦,我的上帝……我犯了这么一个菜鸟错误。我不知道我怎么错过了这个!谢谢
标签: javascript return include conditional-statements