Filter & Sort Lists 列表过滤排序

最后更新:2026-10-28

Filter & Sort Lists 列表过滤排序

列表的筛选与排序不在渲染时改原数组,而是用 filter、sort 等方法派生新数组再渲染。保持原始数据不变、展示时计算结果,是 React 处理列表的核心思路。

分组渲染与状态
类型模式
引入版本React 最早版本

ℹ️ 说明 编辑器将 JSX 转译为 JavaScript 后在沙箱中渲染真实界面;组件自动挂载,无需手写 render 调用。

📝 语法

const shown = products
  .filter((p) => p.price < 100)        // 过滤 → 新数组
  .sort((a, b) => a.price - b.price)   // 排序(基于 filter 的副本)
{shown.map((p) => <li key={p.id}>{p.name}</li>)}

返回值:无返回值,作为编码约定/心智模型使用。

▶ 示例

示例可直接运行:展开后自动渲染,编辑代码即时生效。

输出结果:

一个商品列表配两个控件:勾选「只看百元内」后列表只剩鼠标;点价格按钮在降序 / 升序间切换,列表实时重排——原始数组始终没被修改。

💡 要点

💡 提示 先 filter 后 sort:filter 返回新数组,sort 在副本上原地排序就不会碰坏 state 原数组。
⚠️ 注意 sort 会原地修改数组!直接对 state 数组排序前先用 [...arr] 或先 filter 复制一份。
ℹ️ 说明 筛选条件、排序方向一般存进 state,展示结果在渲染时算出来即可,不必再存一份「派生状态」。
更多案例整理中,敬请期待。

📚 相关教程

❓ 常见问题

Q React 里怎么过滤和排序列表?
A 渲染前用 filter 筛选、sort 排序得到新数组,再 map 渲染;筛选条件放在 state 里,结果在渲染时计算。
Q sort 会修改原数组吗?
A 会,sort 是原地排序。对 React state 数组排序前必须先复制([...arr].sort 或先 filter),否则状态数组被改坏。
Q 筛选结果要不要存进 state?
A 不要。筛选结果是原始数据 + 条件的派生值,渲染时现算即可;再存一份容易造成两份数据不同步。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏