You need to enable JavaScript to run this app. JavaScript如何输出对象的键名及其全部属性值?
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何输出对象的键名及其全部属性值?

报错根因

你的循环逻辑有两处关键偏差,直接导致了输出不符合预期:

  • 内层取值逻辑错位:你在第二层循环里写的是console.log(savedColor[y]),这里y是嵌套对象的属性名(也就是background、text),但代码是从最外层的savedColor根对象上找名为y的属性——根对象只有plat1、plat2两个键,根本没有和y匹配的键,所以全部返回undefined。
  • 外层打印对象而非键名:第一层循环里你直接打印savedColor[x],这是一个嵌套的普通对象,控制台会默认将其序列化成[Object object],而你预期的第一行输出其实是外层的键名(也就是plat1/plat2本身),压根不需要打印整个嵌套对象。
修正后可实现预期的代码
var savedColor = {
    "plate1" : {
        "background" : "rgb(0,0,0)",
        "text" : "rgb(255,255,255)"
    },
    "plate2" : {
        "background" : "rgb(0,50,50)",
        "text" : "rgb(0,0,0)"
    }
}

for (var outerKey in savedColor) {
    // 打印当前外层键名,匹配预期的plate1/plate2输出行
    console.log(outerKey);
    // 取出当前键对应的嵌套对象,后续直接从这个对象上取属性值
    var innerPart = savedColor[outerKey];
    for (var innerKey in innerPart) {
        console.log(innerPart[innerKey]);
    }
}

注:原对象里的键名拼写是plat1/plat2,和你预期输出的plate1/plate2差了一个字母e,上面的代码已经把键名修正为和预期输出完全对齐的版本。

运行上面的代码,控制台就会逐行输出你需要的结构:

plate1
rgb(0,0,0)
rgb(255,255,255)
plate2
rgb(0,50,50)
rgb(0,0,0)

内容的提问来源于stack exchange,提问作者S a h a d S a j

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 03:15:08