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

如何解析数组中的对象?获取指定Un-Ranked playlist对象

问题:筛选特定条件的JSON对象并获取完整数据

需求:从给定JSON数据中,筛选出type为playlist且metadata.name为Un-Ranked的对象,获取其完整数据(如stats字段)。尝试代码console.log(data.segments.metadata.name[Un-Ranked])无法得到完整对象,寻求解决方法。

给定JSON数据示例:

{
  "data": {
    "platformInfo": {
      "platformSlug": "steam",
      "avatarUrl": "xx"
    },
    "segments": [
      {
        "type": "overview",
        "attributes": {},
        "metadata": {
          "name": "Lifetime"
        },
        "expiryDate": "0001-01-01T00:00:00+00:00",
        "stats": {
          "wins": {
            "rank": 292589,
            "percentile": 93,
            "displayName": "Wins"
          }
        }
      },
      {
        "type": "playlist",
        "attributes": {
          "playlistId": 0,
          "season": 23
        },
        "metadata": {
          "name": "Un-Ranked"
        },
        "expiryDate": "0001-01-01T00:00:00+00:00",
        "stats": {
          "tier": {
            "rank": null,
            "percentile": null,
            "displayName": "Matches",
            "displayCategory": "General",
            "category": "general",
            "description": null,
            "metadata": {
              "iconUrl": "https://trackercdn.com/cdn/tracker.gg/rocket-league/ranks/s4-0.png",
              "name": "Unranked"
            },
            "value": 0,
            "displayValue": "0",
            "displayType": "Number"
          }
        }
      }
    ],
    "availableSegments": [
      {
        "type": "playlist",
        "attributes": {
          "season": 1
        },
        "metadata": {
          "name": "1"
        }
      },
      {
        "type": "playlist",
        "attributes": {
          "season": 23
        },
        "metadata": {
          "name": "Season 9 (23)"
        }
      }
    ],
    "expiryDate": "2023-02-28T16:47:00.691118+00:00"
  }
}

错误原因分析

  1. data.segments是数组类型,不能直接通过.metadata访问数组元素的属性,必须遍历数组中的每个对象
  2. Un-Ranked是字符串字面量,未加引号会被JS解析为变量,导致语法错误或找不到对应值

解决方法

方法1:使用数组find方法(推荐,ES6+支持)

find方法会遍历数组,返回第一个满足筛选条件的完整对象:

// 筛选符合条件的对象
const targetSegment = data.segments.find(segment => 
  segment.type === 'playlist' && segment.metadata.name === 'Un-Ranked'
);

// 输出包含stats在内的完整对象
console.log(targetSegment);

方法2:使用for循环(兼容旧环境)

如果运行环境不支持ES6的find方法,可以用传统循环遍历:

let targetSegment = null;
// 遍历segments数组
for (let i = 0; i < data.segments.length; i++) {
  const segment = data.segments[i];
  // 检查是否符合条件
  if (segment.type === 'playlist' && segment.metadata.name === 'Un-Ranked') {
    targetSegment = segment;
    break; // 找到目标后终止循环,提升效率
  }
}
// 输出结果
console.log(targetSegment);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:07:53