You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选FlatList中符合指定键值的条目,仅展示来自加拿大的人员数据

实现FlatList按指定字段过滤条目方案

核心思路

直接对原数据源调用数组filter()方法,筛选符合from === 'Canada'条件的条目后,再传入FlatList的data属性即可。

完整代码示例

import React from 'react';
import { FlatList, Text, View, StyleSheet } from 'react-native';

// 原数据
const DATA = [
  {
    id: "1",
    from: "Canada",
    name: "person1",
  },
  {
    id: "2",
    from: "Canada",
    name: "person2",
  },
  {
    id: "3",
    from: "France",
    name: "person3",
  }];

const Item = ({ name, from }) => (
  <View style={styles.item}>
    <Text style={styles.name}>{name}</Text>
    <Text style={styles.from}>来自:{from}</Text>
  </View>
);

export default function App() {
  // 过滤得到仅来自加拿大的条目
  const filteredData = DATA.filter(item => item.from === 'Canada');

  const renderItem = ({ item }) => (
    <Item name={item.name} from={item.from} />
  );

  return (
    <FlatList
      data={filteredData}
      renderItem={renderItem}
      keyExtractor={item => item.id}
    />
  );
}

const styles = StyleSheet.create({
  item: {
    padding: 16,
    borderBottomWidth: 1,
    borderBottomColor: '#eee',
  },
  name: {
    fontSize: 16,
    fontWeight: 'bold',
  },
  from: {
    fontSize: 14,
    color: '#666',
    marginTop: 4,
  }
});

拓展说明

  • 如果需要动态切换筛选条件(比如支持切换不同国家筛选),可以把筛选值存在useState中,过滤逻辑会随状态变化自动更新:
const [filterCountry, setFilterCountry] = useState('Canada');
const filteredData = DATA.filter(item => item.from === filterCountry);
// 后续可通过调用setFilterCountry修改筛选条件,自动更新FlatList展示内容
  • filter()方法不会修改原数组,仅返回符合条件的新数组,不会影响其他业务逻辑对原完整数据的使用。

内容的提问来源于stack exchange,提问作者Mohammad Massri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:39:02