我有一个像这样的对象this.themeData(显示了控制台输出)

Object
    Banner: Object
        property: "null"
        raw: "uploads/1/somefile.png"
        selector: "null"
        value: "../../uploads/1/somefile.png"
        __proto__: Object
    H1_FontSize: Object
    H2_FontColor: Object
    H2_FontSize: Object


我像这样循环遍历:

    for (attrName in this.themeData) {
        attrData = this.themeData[attrName];
        if (attrData.selector && attrData.value) {
            $(".SomeSelector").css(attrData.property, attrData.value);
        }
    }


这可行,但是我在最近的SO question中看到我不应该使用for in。但是,如果索引不是数字值for(var i = 0; i<arr.length; i++)而其中this.themeData[i]不存在,该如何遍历呢?

最佳答案

在对象上使用for..in循环很好,您只需要使用hasOwnProperty()检查来过滤它们

for (attrName in this.themeData) {
    if (this.themeData.hasOwnProperty(attrName)) {
        attrData = this.themeData[attrName];
        if (attrData.selector && attrData.value) {
            $(".SomeSelector").css(attrData.property, attrData.value);
        }
    }
}

10-05 22:22