JavaScript:重构,避免 array.push()

标签 javascript arrays

我在这样的对象中有一个函数:

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/

相关文章:

javascript - express.js中基于请求参数的动态路由

javascript根据点击的img更改img onclick

javascript - 使用对象来简化 d3.js 中的代码

javascript - 具有普通概念javascript的自动完成文本框

ios - 从 Parse 中检索数组并将它们保存在具有相应值的字典中。 [字符串() : [String]()]

javascript - Canvas - 无法获取图像数据

javascript - 从回调中递归调用函数会导致堆栈溢出吗?

java - Java 中的子字符串替换

php - is_array() 的区别

java - 字符串数组传递给另一个 Activity - android studio