当前位置:首页 > React

react实现数组过滤

2026-01-27 19:29:31React

数组过滤的基本方法

在React中实现数组过滤通常使用filter方法,结合状态管理(如useState)动态更新过滤结果。以下是一个基础示例:

import React, { useState } from 'react';

function FilterExample() {
  const [searchTerm, setSearchTerm] = useState('');
  const items = ['Apple', 'Banana', 'Cherry', 'Date'];

  const filteredItems = items.filter(item =>
    item.toLowerCase().includes(searchTerm.toLowerCase())
  );

  return (
    <div>
      <input
        type="text"
        placeholder="Search..."
        onChange={(e) => setSearchTerm(e.target.value)}
      />
      <ul>
        {filteredItems.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

复杂对象数组的过滤

当处理包含对象的数组时,可以通过指定属性进行过滤:

const products = [
  { id: 1, name: 'Laptop', category: 'Electronics' },
  { id: 2, name: 'Shirt', category: 'Clothing' }
];

const filteredProducts = products.filter(product =>
  product.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
  product.category.toLowerCase().includes(searchTerm.toLowerCase())
);

多条件过滤实现

通过组合多个条件实现高级过滤逻辑:

const [filters, setFilters] = useState({
  name: '',
  category: '',
  priceRange: [0, 100]
});

const filteredData = products.filter(item => {
  const matchesName = item.name.toLowerCase().includes(filters.name.toLowerCase());
  const matchesCategory = filters.category ? item.category === filters.category : true;
  const matchesPrice = item.price >= filters.priceRange[0] && item.price <= filters.priceRange[1];
  return matchesName && matchesCategory && matchesPrice;
});

性能优化技巧

对于大型数据集,考虑以下优化方案:

  • 使用useMemo缓存过滤结果避免重复计算
  • 对输入框添加防抖处理(debounce)
  • 分页展示过滤结果
const filteredItems = useMemo(() => {
  return largeDataSet.filter(item => 
    // 过滤条件
  );
}, [largeDataSet, searchTerm]);

与后端结合的过滤

当数据量极大时,建议将过滤逻辑移至后端:

react实现数组过滤

const [data, setData] = useState([]);

useEffect(() => {
  const fetchData = async () => {
    const response = await fetch(`/api/items?q=${searchTerm}`);
    setData(await response.json());
  };
  const debounceTimer = setTimeout(fetchData, 300);
  return () => clearTimeout(debounceTimer);
}, [searchTerm]);

标签: 数组react
分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高 React Native 允许开发者使用 JavaScript 和 React 编写代码,同时生成 iOS 和 Android 应用,大幅减少开发成…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…