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

JavaScript中无需指定内部键名遍历嵌套对象的实现方法

动态遍历嵌套对象的解决方案

当然可以!你不需要硬编码hero、monster这类内部对象的键名,只需借助Object.values()(如果需要同时获取外层键名则用Object.entries())就能动态遍历characterData下的所有内部对象,同时避免重复调用Object.entries()的冗余操作。

方案1:遍历所有内部对象的键值对

直接获取父对象的所有内部对象,再逐个处理其键值对:

// 先获取所有内部对象的数组,再逐个遍历处理
Object.values(characterData).forEach(character => {
  Object.entries(character).forEach(([key, value]) => {
    console.log(`${key}: ${value}`);
  });
});

说明:Object.values(characterData)会返回包含hero和monster的数组,无需显式指定它们的键名。每个内部对象仅调用一次Object.entries(),避免了重复操作。

方案2:同时获取外层角色名称与内部属性

如果需要知道每个键值对属于哪个角色(如hero或monster),可以用Object.entries()遍历父对象:

// 同时获取外层角色键名和内部对象
Object.entries(characterData).forEach(([charRole, character]) => {
  console.log(`=== ${charRole} 的属性 ===`);
  Object.entries(character).forEach(([key, value]) => {
    console.log(`${key}: ${value}`);
  });
});

方案3:收集所有键值对统一处理

若想把所有内部对象的键值对整合到一个数组后再统一操作,可使用flatMap:

// 收集所有内部对象的键值对到一个数组
const allCharacterEntries = Object.values(characterData).flatMap(character => Object.entries(character));

// 统一遍历处理
allCharacterEntries.forEach(([key, value]) => {
  console.log(`${key}: ${value}`);
});

以上所有方案都完全基于父对象characterData动态完成,无需依赖任何硬编码的内部对象键名,且每个内部对象仅调用一次Object.entries(),完美匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:02:40