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

JS/TS中如何从对象数组提取嵌套属性的去重唯一值

数组对象指定属性去重提取方案

现有数据与需求

给定如下结构的游戏列表数组:

[
  {
    "name": "Ankh of Anubis",
    "rank": {
      "_type": "medal",
      "current": "ankh-of-anubis"
    }
  },
  {
    "name": "Bonus Roulette",
    "rank": {
      "_type": "medal",
      "current": "bonus-roulette"
    }
  },
  {
    "name": "jetx",
    "rank": {
      "_type": "medal",
      "current": "jetx"
    }
  },
  {
    "name": "Gates of Olympus",
    "rank": {
      "_type": "trophy",
      "current": "gates-of-olympus"
    }
  },
]

需要提取所有元素rank._type字段的去重值,预期输出:

uniqueValues = ["medal","trophy"]

原有写法的问题

之前尝试的三种写法都不生效,核心问题如下:

  • 属性访问路径错误:目标字段是数组每一项下的rank._type,不存在根节点的games.category.title字段
  • API使用错误:filter是用来筛选符合条件的原数组元素,不能用来提取属性值;Set需要接收可遍历的属性值集合来完成去重,不能直接传入单个属性值
  • React Hook依赖缺失:useEffect没有把games加入依赖数组,数据更新时不会重新计算结果

可直接运行的正确代码

原生JS/TS通用写法

// 先用map遍历提取所有_type值,传入Set去重后转回数组即可
const uniqueValues = [...new Set(games.map(game => game.rank._type))]

React Hook场景写法

useEffect(() => {
  const uniqueTypes = Array.from(new Set(games.map(game => game.rank._type)))
  setTitles(uniqueTypes)
}, [games]) // 必须将games加入依赖数组,保证数据变更时结果同步

内容的提问来源于stack exchange,提问作者Sai Krishnadas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:06:33