【问题标题】:Transverse object array and replace the value of all fields in JavaScript横向对象数组并替换JavaScript中所有字段的值
【发布时间】:2014-03-20 21:19:18
【问题描述】:

给大家一个快速的问题(也许很简单):

我得到了这个数组:

this.skins = {
    "hologramDark": {
        dialog: {
            default: "bgDialog"
        },
        button: {
            default: "btnDefault",
            disabled: "btnDisabled",
            focused: "btnFocused",
            pushed: "btnPushed",
        }
    }
};

我需要(来自 C#+LINQ 世界)为“hologramDark”中的每个项目执行“,将对话框“default:”的值替换为函数的结果(例如,assignImage(dialog.default)) ,然后对每个按钮的值(默认、禁用、聚焦等)执行相同的操作。

有什么建议吗?我使用过普通数组 [],但我不知道如何遍历这些数组。

谢谢!

【问题讨论】:

  • 这不是 JavaScript 数组..
  • 你是对的,我的错。在我开始下班回家之前,我把这篇文章写得有点快。虽然有时我将它们用作数组,但它更像是一个对象而不是数组,感谢您的更正:P

标签: javascript arrays named typed


【解决方案1】:

您可以使用 for..in 循环遍历 Object 的属性

var obj = this.skins.hologramDark, key; // remember to var
for (key in obj) { // loop over each key
    if (obj.hasOwnProperty(key)) { // if the key is on the obj (not inherited)
        if (typeof obj[key] === 'object') { // and the property is another object
            obj[key].default = 'foo'; // set the property default
        }
    }
}

【讨论】:

  • 这里不需要hasOwnProperty 检查,可能会造成混淆。
  • 如果你在 JS 中使用 OOP 系统,这很有意义。非常感谢保罗的帮助! :D 代码完美运行 :)
  • @PaulS。 null 没有object 类型吗? (见console.log(typeof null)
猜你喜欢
  • 2018-05-12
  • 2014-05-27
  • 2023-03-20
  • 2019-10-30
  • 2017-03-20
  • 2020-08-18
  • 2015-03-31
  • 2014-06-30
  • 2017-12-11
相关资源
最近更新 更多