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

React中如何根据键过滤对象数据并使用useState生成新数组?

实现方案

你可以通过Object.values()结合数组map方法完成字段提取,写法比for...of更简洁,符合React函数式编码习惯,性能没有明显差异。

注意你给出的目标结构[amount: 500, date: '2021-12-07']属于语法笔误,JS数组不支持命名键,实际应为对象数组,以下代码按标准对象数组实现,如果你确实需要特殊结构可自行调整返回值。

完整代码示例:

import { useState, useEffect } from 'react'

// 你的原始源数据
const originData = {
  0: {
    buyAmount: 16.664328043964396,
    buyAmountInUsd: 16.685266204095775,
    date: {date: '2021-12-07'},
    sellAmount: {USD: 500, INR: 35000}
  },
  1: {
    buyAmount: 1004.7015442959262,
    buyAmountInUsd: 1005.9639175379324,
    date: {date: '2021-12-07'},
    sellAmount: {USD: 1000, INR: 79000}
  }
}

function YourComponent() {
  // 初始化state存储处理后的结果数组
  const [processedList, setProcessedList] = useState([])

  useEffect(() => {
    // 核心处理逻辑
    const result = Object.values(originData).map(item => ({
      amount: item.sellAmount.USD,
      date: item.date.date
    }))
    setProcessedList(result)
  }, [])

  // 后续直接使用processedList即可
  return <div>{/* 你的业务渲染逻辑 */}</div>
}

如果偏好for...of写法,也可以用如下方式实现,效果完全一致:

const result = []
for (const item of Object.values(originData)) {
  result.push({
    amount: item.sellAmount.USD,
    date: item.date.date
  })
}
setProcessedList(result)

内容的提问来源于stack exchange,提问作者Mohit Chandel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:00