在数组比较的情况下进行jquery优化

时间:2013-10-26 05:34:04

标签: jquery

  

我希望优化下面的代码。

  • 输入:jsonData是包含所有avaya技能的JSON
  • sitePbx是包含特定网站的pbx的数组
  

注意事项:代码行数应少于   与上面的代码相比

  • 代码应该是通用的,以便在

      

    未来如果添加新的PBX,则不再需要if-else

  •   
  • 数量   比较应该更少,以便优化绩效
  •   

1 个答案:

答案 0 :(得分:0)

var pbxNames = {"Elk Grove": "ElkGrove"};
var container = $('#' + attributeTableId + portletId);

$.each(jsonData, function(i, json) {
    var addPbx = true;
    $.each(sitePbx, function(j, pbx) {
        if (json[pbxNames[pbx] || pbx] == 'null') {
            addPbx = false;
        }
    });
    if (addPbx) {
        container.append('<option value="' +
                         json.id +
                         '">' +
                         json.name +
                         '</option>');
    }
});

我的想法是:不是单独检查Pbx,而是循环遍历sitePbx的元素,并检查JSON节点中是否存在关联的标记。

由于pbxNames而存在Elk Grove地图(在其他情况下,标记与名称相同)。添加新的PBX应该是自动的,除非名称需要转换为pbxNames中的标记。

可以使用删除空格而不是地图,但它也不太通用。

我非常怀疑这段代码可能会对性能产生影响,但只查看容器一次,而每jsonData元素应该更好一次。

如果jsonData真的非常庞大且只会添加很少的选项,那么一些元编程可能是合理的(即使用eval动态生成展开的函数)。