在 React Native 部分列表中过滤数据

2024-04-08

我正在使用 React Native 的SectionList。 SectionList 的数据看起来像这样

data: [
    {
      title: "Asia",
      data: ["Taj Mahal", "Great Wall of China", "Petra"]
    },
    {
      title: "South America",
      data: ["Machu Picchu", "Christ the Redeemer", "Chichen Itza"]
    },
    {
      title: "Europe",
      data: ["Roman Colosseum"]
    }
  ]

我有一个文本输入,我尝试使用它过滤掉部分列表中的内容。我尝试使用Array.filter()这似乎不起作用。它返回给我整个数据,没有任何过滤。所以,我尝试了Array.some()。现在,即使有一项与该部分匹配,该部分中的所有数据项也会被过滤。这种行为是预期的Array.some()。但我很困惑为什么Array.filter()在我的情况下不起作用。

我的部分列表看起来像这样,

<SectionList 
      sections={this.state.data.filter(sectionData => {
        sectionData = sectionData.data;
        return sectionData.filter(data => {
          return data.includes(this.state.searchTerm);
        })
      })}
      renderSectionHeader={({ section: { title } }) => ( <Text style={{ fontWeight: "bold" }}>{title}</Text> )}
      renderItem={({ item }) => ( <Text style={styles.listItem}>{item}</Text>)}
      keyExtractor={item => item}
    />

这是链接博览游乐场 https://snack.expo.io/BJa1yRgQm如果你想在线玩它。


filter将创建一个新数组,其中包含返回真值的所有条目。您的第二个过滤器将始终至少返回一个空数组,这是真实的,因此您将在最终结果中获得所有部分。

你可以尝试组合使用reduce https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce and filter反而:

this.state.data.reduce((result, sectionData) => {
  const { title, data } = sectionData;
  const filteredData = data.filter(
    element => element.includes(this.state.searchTerm)
  );

  if (filteredData.length !== 0) {
    result.push({
      title,
      data: filteredData
    });
  }

  return result;
}, [])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 React Native 部分列表中过滤数据 的相关文章

随机推荐

  • 使用 jquery 将字符串与数字分割[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有类似的字符串 1 test one 2 test two 3 test three 4 test four 5 test five
  • Xcode 中出现错误“未设置视图出口。”

    我在 Xcode 中遇到问题 每次我在模拟器中运行我的应用程序时 该应用程序都会在黑屏视图中停止 并且调试器会编写以下代码 2012 07 04 11 54 08 348 myApp 661 f803 由于以下原因终止应用程序 未捕获的异常
  • Laravel 5 - 未找到 Application::shutdown() 函数,是否有其他解决方案?

    出现致命错误 在 laravel 5 中调用未定义的方法 Illuminate Foundation Application shutdown 代码示例 App shutdown function do somthing 使用 Larave
  • 在进行 Rails asset:precompile 时如何运行一些初始化程序?

    背景 我有一个应用程序 最近更新到了 Rails 3 2 1 从 Rails 3 0 x 并重构了 JS 和 CSS 资源以利用新的资源管道 该应用程序托管在具有 Celadon Cedar 堆栈的 Heroku 上 应用程序配置 我将应用
  • EF4 仅代码映射继承

    我有以下型号 我想要ShiftRequest and MissionRequest在数据库中有一个表 public class RequestBase public int Id get set public DateTime Reques
  • golang:如何卸载已加载的“go插件”1.8

    go1 8开始 go支持创建和加载插件 但不支持卸载插件 插件是在运行时加载的模块 是否可以卸载模块 如果无法卸载模块 那么在应用程序级别卸载插件 使其不可用但仍在内存中的最佳方法是什么 Go 不支持卸载插件 但您可以按照您的建议禁用它 通
  • 如何将我的代理凭据传递给 SharePoint 客户端上下文对象...? (SharePoint 客户端对象模型)

    我正在编写一个使用客户端对象模型访问 SharePoint 网站的应用程序 并且我位于代理服务器后面 我打电话 ClientContext ExecuteQuery 并收到以下错误消息 远程服务器返回错误 407 需要代理身份验证 如何将我
  • 从特定键的嵌套数组行收集所有值[重复]

    这个问题在这里已经有答案了 需要创建一个列表 其中包含存储在特定键 product id 的数组行中的所有值 目前 对 bestsellers 变量执行 print r 会生成以下数组 Array 0 gt stdClass Object
  • 在 Linux 上调用 Python IDLE

    我正在尝试搭建Python开发环境 我在 Linux Mint 14 上运行 Python 2 7 3 我下载了 IDLE 并安装了它 它干净安装并且 Python 运行得很好 那么如何调用IDLE呢 我的路径中没有任何 IDLE whic
  • 如何运行使用 PyRun 读入 std::string 的 python 文件

    我正在将 Python 嵌入到我的 C 程序中 并且非常有效地使用了 PyRun SimpleString 但现在遇到了麻烦 我所做的是将 python py 文件加载到 std string 但现在运行它时遇到问题 PyRun Simpl
  • Git post-rebase 钩子

    有没有像 post rebase hook 这样的东西 我的目标是我想要一个脚本在之后执行git pull rebase使用命令 看来重写后挂钩可以完成这项工作
  • 领域驱动设计和聚合参考

    我正在设计领域模型 但有些东西似乎不太好 我从一个主要的聚合开始 它引用了其他聚合 而其他聚合也引用了更多聚合 我可以从主聚合开始遍历孔域模型 我看到的问题是我将在内存中保存聚合的所有实例 这是一个好的设计吗 我可以通过延迟加载解决内存问题
  • Postgres jsonb_set 多个嵌套字段

    我有一个带有 jsonb 列的数据库表 该列有一个实体 带有嵌套的子实体 假设我们有 SELECT jsonb set top nested leaf 1 top nested leaf 2 更新哪个作品就可以了top nested lea
  • SFSpeechRecognizer 的多个实例?

    我正在尝试运行多个实例SFSpeechRecognizer 不幸的是我总是收到这个错误 Utility AFAggregator logDictationFailedWithError Error Domain kAFAssistantEr
  • 循环遍历空文本框,直到文本框有数据

    我确信对此有一个简单的解决方案 但我没有想到 我有一个带有三个文本框的表单 在运行主代码之前 我想确保每个文本框中都有数据 我已将 hasData 初始化为变量 该变量将决定代码是否可以继续前进 我在 Do While 循环中评估 hasD
  • 与 fetch_all 一起使用时,存储过程导致 mysqli 出现问题

    我已经将这个问题分解到其本质 但仍然遇到问题 当我尝试使用 fetch all 获取存储过程的结果时 我得到的结果按预期返回到数组 但后续 mysqli 调用抛出 命令不同步 错误 我什至尝试简化我的存储过程 CREATE PROCEDUR
  • ImageMagick 没有此图像格式的解码委托

    我在 Windows 和 wamp 服务器下工作 这是我使用 Imagick 的 PHP 代码 imagick new Imagick SERVER DOCUMENT ROOT this gt name where SERVER DOCUM
  • 使用 UITableView 登录

    如何像在 Skype 应用程序中一样创建用户名 密码登录 我知道这是一个分组表视图 但我该怎么做呢 我搜索了网站 发现了以下代码 UITableViewCell tableView UITableView tableView cellFor
  • 将 RadioButton IsChecked 绑定到 ListBoxItem IsSelected 和 ListBox IsFocused

    我见过其他与此非常相似的问题 但不知何故我仍然无法让它发挥作用 这是场景 我拥有的我有一个ListBox显示我的视图模型的列表 每个视图模型都有一个子级列表 这些子级显示在另一个嵌套列表框中 我正在使用一个DataTemplate为了达成这
  • 在 React Native 部分列表中过滤数据

    我正在使用 React Native 的SectionList SectionList 的数据看起来像这样 data title Asia data Taj Mahal Great Wall of China Petra title Sou