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

如何使用ES6 spread operator遍历非数组JSON结构并获取指定英雄名称?

关于嵌套JSON结构使用ES6扩展运算符的问题

当然可以用ES6的扩展运算符(...)啦!不过因为你的JSON是嵌套结构(包含result和heroes层级),直接对顶层对象用扩展运算符肯定达不到遍历内部条目的效果——扩展运算符对对象来说只会展开它的直接属性,没法自动深入到嵌套的层级中。

先明确你的JSON结构(模拟)

根据你的描述,你的JSON大概是类似这样的嵌套结构:

{
  "result": {
    "heroes": [
      {"name": "Anti-Mage", "otherProp": "xxx"},
      // 剩下114个英雄条目
    ]
  }
}

如何使用扩展运算符?

扩展运算符可以作用在可迭代对象(比如数组)或普通对象上,但你需要先穿透嵌套层级,定位到目标的heroes数组:

  • 如果你想把heroes数组的元素复制到新数组里,可以这样用:
    const jsonData = /* 你的JSON数据 */;
    const allHeroes = [...jsonData.result.heroes]; // 复制整个英雄数组
    
  • 如果你想结合解构赋值(和扩展运算符配套的常用写法)拆分数组,比如取出第一个英雄和剩下的所有英雄:
    const { result: { heroes } } = jsonData;
    const [firstHero, ...remainingHeroes] = heroes;
    // firstHero就是第一个条目(Anti-Mage),remainingHeroes是剩下的114个
    

输出首个条目(Anti-Mage)的名称

其实不需要复杂操作,定位到数组第一个元素直接访问即可,结合扩展运算符的解构写法会更优雅:

// 方式1:直接通过索引访问
console.log(jsonData.result.heroes[0].name);

// 方式2:用解构+扩展运算符
const { result: { heroes: [firstHero] } } = jsonData;
console.log(firstHero.name);

总结一下:扩展运算符完全适用于你的场景,但它本身不具备“自动遍历嵌套结构”的能力,你需要先手动访问到heroes这个数组层级,之后就能正常使用扩展运算符做各种操作啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:44