我在这样的对象中有一个函数:
arrayofElements: function(item) {
var result = [];
if (item.isA) {
result.push(new Div('aClass', labels['A']));
}
if (item.isC) {
result.push(new Div('cClass', labels['C']));
}
if (item.isD) {
result.push(new Div('dClass', labels['D']));
}
return result;
},
如何重构?我不喜欢有条件地 push() 每个项目。
最佳答案
您可以移动 is*
属性到子对象以便隔离它们,并循环遍历子对象的属性
item.is={A:'aClass', C:'cClass'};
...
arrayofElements: function(item) {
var result = [];
for (p in item.is) {
result.push(new Div(item.is[p], labels[p]));
}
return result;
},
item.is
中的值可以是类(如图所示)或 item.is
中的值可能是带有 class
的对象属性,或者您可以使用属性名称 p
作为另一个对象中的索引来获取类。这在很大程度上取决于 item
是什么s 代表和元素类最密切相关的是什么。
关于JavaScript:重构,避免 array.push(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174608/