我希望优化下面的代码。
注意事项:代码行数应少于 与上面的代码相比
中
未来如果添加新的PBX,则不再需要if-else
答案 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
动态生成展开的函数)。