基于不同文本输入对 React 中不同字段的过滤

特拉布尔

我正在尝试根据可能为空或可以填写的文本字段过滤卡片,如果它们已填写,那么我想过滤掉不包含该字符串的所有内容。

例如,如果我只想按标题“Test”过滤,我只会在标题输入框中放一些东西,但如果我想按标题和作曲家过滤,我会填写两个文本字段,只填写卡片与两个文本字段匹配将显示。

目前我尝试这样做的方式如下:

filterMusicLibrary() {
    let musicLibraryItems = [];
    this.state.musicGet.map(music => {
        if(music.title) {
            if(music.title.includes(this.state.title) ) {
                musicLibraryItems.push(
                    <MusicLibraryItem key= {music.id} music={music} history={this.props.history}/>
                );
            }
        }
        if(music.composer) {
            if(music.composer.includes(this.state.composer) ) {
                musicLibraryItems.push(
                    <MusicLibraryItem key= {music.id} music={music} history={this.props.history}/>
                );
            }
        }
        if(music.arranger) {
            if(music.arranger.includes(this.state.arranger) ) {
                musicLibraryItems.push(
                    <MusicLibraryItem key= {music.id} music={music} history={this.props.history}/>
                );
            }
        }
        if(music.instrumentation) {
            if(music.instrumentation.includes(this.state.instrumentation) ) {
                musicLibraryItems.push(
                    <MusicLibraryItem key= {music.id} music={music} history={this.props.history}/>
                );
            }
        }



    });

    musicLibraryItems = [..new Set(musicLibraryItems)]
    return musicLibraryItems;

}

我正在将所有内容推送到一个musicLibraryItems数组,然后我希望通过使用 ES6 中的 Set 变量类型来获取唯一值,但它未能按预期工作,这种方式也非常低效,我想知道是否有人可以帮我找到一个解法。

奥布罗西斯

使用 aSet不会起作用,因为所有项目都将是唯一的对象,但由于MusicLibraryItem每种情况组件都相同,您可以使用 a 非常优雅地表达这一点filter

filterMusicLibrary() {
  const filteredMusicItems = this.state.musicGet.filter((music) =>
    (!this.state.title || music.title && music.title.includes(this.state.title)) &&
    (!this.state.composer || music.composer && music.composer.includes(this.state.composer)) &&
    (!this.state.arranger || music.arranger && music.arranger.includes(this.state.arranger)) &&
    (!this.state.instrumentation || music.instrumentation && music.instrumentation.includes(this.state.instrumentation))
  );
  return filteredMusicItems.map((music) =>
    <MusicLibraryItem key={music.id} music={music} history={this.props.history}/>
  );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

根据不同文档中同一字段的不同值进行过滤

来自分类Dev

根据不同文档中同一字段的不同值进行过滤

来自分类Dev

根据React中的输入字段过滤对象数组

来自分类Dev

Elasticsearch,针对不同的geopoint字段基于不同的半径过滤文档

来自分类Dev

SQL 在不同的过滤器中插入附加字段

来自分类Dev

Java jcombobox下拉菜单中的不同文本和textfield中的不同文本

来自分类Dev

Java jcombobox下拉菜单中的不同文本和textfield中的不同文本

来自分类Dev

基于不同文本文件的行,使用powershell替换文本文件的行

来自分类Dev

Flutter-将不同文本字段中的值相乘

来自分类Dev

带有不同文本大小的按钮

来自分类Dev

带有不同文本大小的按钮

来自分类Dev

动作栏的不同文本颜色

来自分类Dev

Dojo dgrid:单击过滤器按钮时,使用不同的字段过滤存储中的数据

来自分类Dev

在react-native中的文本输入字段之前显示文本

来自分类Dev

如何在Elasticsearch中基于输入字段获取字段的总和值(输入字段和总和输出字段不同)

来自分类Dev

如何替换在不同文件中动态的文本段?

来自分类Dev

Rails中的不同文本i18n

来自分类Dev

从文本字段输入中过滤JList

来自分类Dev

引导过滤“输入=文本”字段中的值

来自分类Dev

如何从字符向量中的不同文本中删除具有不同长度的文本块?

来自分类Dev

在同一索引中合并不同文档的字段

来自分类Dev

无法在React中输入字段

来自分类Dev

验证React中的输入字段

来自分类Dev

React.js-无法在文本字段中输入

来自分类Dev

我无法在 React 文本字段中输入

来自分类Dev

从数组列表设置文本视图的不同文本

来自分类Dev

Expo React本机日历-错误:HostFunction中的异常:来自JS的格式错误的调用:字段大小不同

来自分类Dev

输入字段显示iOS中的不同大小

来自分类Dev

输入字段显示iOS中的不同大小

Related 相关文章

  1. 1

    根据不同文档中同一字段的不同值进行过滤

  2. 2

    根据不同文档中同一字段的不同值进行过滤

  3. 3

    根据React中的输入字段过滤对象数组

  4. 4

    Elasticsearch,针对不同的geopoint字段基于不同的半径过滤文档

  5. 5

    SQL 在不同的过滤器中插入附加字段

  6. 6

    Java jcombobox下拉菜单中的不同文本和textfield中的不同文本

  7. 7

    Java jcombobox下拉菜单中的不同文本和textfield中的不同文本

  8. 8

    基于不同文本文件的行,使用powershell替换文本文件的行

  9. 9

    Flutter-将不同文本字段中的值相乘

  10. 10

    带有不同文本大小的按钮

  11. 11

    带有不同文本大小的按钮

  12. 12

    动作栏的不同文本颜色

  13. 13

    Dojo dgrid:单击过滤器按钮时,使用不同的字段过滤存储中的数据

  14. 14

    在react-native中的文本输入字段之前显示文本

  15. 15

    如何在Elasticsearch中基于输入字段获取字段的总和值(输入字段和总和输出字段不同)

  16. 16

    如何替换在不同文件中动态的文本段?

  17. 17

    Rails中的不同文本i18n

  18. 18

    从文本字段输入中过滤JList

  19. 19

    引导过滤“输入=文本”字段中的值

  20. 20

    如何从字符向量中的不同文本中删除具有不同长度的文本块?

  21. 21

    在同一索引中合并不同文档的字段

  22. 22

    无法在React中输入字段

  23. 23

    验证React中的输入字段

  24. 24

    React.js-无法在文本字段中输入

  25. 25

    我无法在 React 文本字段中输入

  26. 26

    从数组列表设置文本视图的不同文本

  27. 27

    Expo React本机日历-错误:HostFunction中的异常:来自JS的格式错误的调用:字段大小不同

  28. 28

    输入字段显示iOS中的不同大小

  29. 29

    输入字段显示iOS中的不同大小

热门标签

归档