javascript - 从数组内部过滤值

标签 javascript arrays reactjs

我有一个可以过滤项目标签的解决方案。更新以便书籍可以接收多个标签并添加标签数组:

const bookListBefore = [
  { id: 1, tag: 'Fysik' },
  { id: 2, tag: 'Marketing' },
  { id: 3, tag: '' },
  ];

 const bookListNow = [
 { id: 1, tag: ['Fysik', 'Matematik'] },
 { id: 2, tag: ['Analytics', 'Marketing', 'Data'] },
 { id: 3, tag: [''] },
 ];

现在我正在努力寻找一种解决方案来过滤那些具有特定标签的项目。在使用单个标签之前,我可以执行过滤器并使用此解决方案显示具有特定标签的项目:

const filteredList = bookList
    .filter(item => (item.title.toLowerCase().includes(searchTextHome)
      || item.author.toLowerCase().includes(searchTextHome))
      && (selectedTags.length > 0 ? selectedTags.includes(item.tag) : true));

 <section className={stylesSCSS.bookContainer}>
        {filteredList.length === 0 ? emptyPlaceholder()
          : filteredList.map(item => (
            <BookItem
              cover={item.cover}
              item={item}
              userTagData={userTagData}
              onTagSelected={onTagSelected}
            />
          ))
        }
  </section>

过滤 bookList 的“搜索”的第一部分是关于输入搜索字段,但第二部分 (selectedTags.length > 0 ? selectedTags.includes(item.tag) : true) 是我无法过滤标签数组,也不知道如何使用 maybe spread 运算符或数组函数来过滤标签数组。有什么想法吗?

最佳答案

我认为它可以与数组函数 some 一起使用

selectedTags.length > 0 ? selectedTags.some(st => item.tag.includes(st)) : true

有了这个,至少一个选定的标签应该与图书标签列表相匹配,并且它将被显示。

关于javascript - 从数组内部过滤值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614781/

相关文章:

javascript - 有人可以在使用 indexOf、split 然后利用循环将分割粘贴到各个输入时校对我的 javaScript 语法吗?

jquery - 如何使用 jquery 测试属性是否等于 ""

java - Java如何获取文件夹中的所有文件

java - 在 Hibernate 返回的列表上调用 List#toArray() 时出现 ArrayStoreException

reactjs - useQueries 的启用选项

javascript - 事件/非事件状态

javascript - 在不同的 x, y 位置 Canvas 上重新绘制一个矩形

reactjs - 试图找到卷轴的方向

javascript 文件或文件夹查找和导入

javascript - 'yield' 表达式隐式生成 'any' 类型,因为其包含的生成器缺少返回类型注释