我有一个像这样的对象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);
}
}
}