You need to enable JavaScript to run this app. JavaScript如何查找数组指定元素?React中统计数组完成项数量的方法
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何查找数组指定元素?React中统计数组完成项数量的方法

实现方案

find() 方法仅返回第一个符合匹配条件的单条数据,无法获取全部符合条件的条目,也不能直接统计总数。
你可以直接使用数组的 filter() 方法实现需求,该方法会返回所有符合条件的元素组成的新数组,不会修改原数组,符合React状态的不可变原则。统计数量直接取筛选后数组的length属性即可。

基础用法示例

// 筛选所有已完成条目到新数组
const completedTasks = tasks.filter(task => task.completed === true)
// 直接通过数组长度获取完成条目的count
const completedCount = completedTasks.length

React 组件内优化写法

如果是在React组件内使用,推荐搭配useMemo缓存计算结果,避免每次组件渲染都重复执行筛选逻辑,提升性能:

import { useState, useMemo } from 'react'

function TaskComponent() {
  const [tasks, setTasks] = useState([
    {
      id: 1, 
      text: "去湖边", 
      reminder: false,
      time: '08:00',
      completed: false
    },
    {
      id: 2, 
      text: "提交代码到github", 
      reminder: true,
      time: '13:00',
      completed: false
    },
    {
      id: 3, 
      text: "买杂货", 
      reminder: false,
      time: '15:00',
      completed: false
    },
  ])

  // 仅当tasks数组变化时才重新计算已完成条目和数量
  const { completedTasks, completedCount } = useMemo(() => {
    const filteredCompleted = tasks.filter(task => task.completed)
    return {
      completedTasks: filteredCompleted,
      completedCount: filteredCompleted.length
    }
  }, [tasks])

  // 渲染示例
  return (
    <div>
      <p>已完成任务总数:{completedCount}</p>
      <div>
        {completedTasks.map(task => (
          <div key={task.id}>
            {task.time} - {task.text}
          </div>
        ))}
      </div>
    </div>
  )
}

精简计数方案

如果不需要保留已完成的条目数组,只需要统计数量,可以直接用reduce方法一次性计算:

const completedCount = tasks.reduce((count, task) => task.completed ? count + 1 : count, 0)

内容的提问来源于stack exchange,提问作者Ramazan Erikli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:57:03