JavaScript 代码优化:合并if语句、简化表达式、提取变量
JavaScript 代码优化:合并if语句、简化表达式、提取变量
这段代码用于根据不同的条件更新 griddata 数组中的 treeSort 和 isChanged 属性。以下是优化后的代码,并解释了优化方法:
原始代码:
if(refreshType&&(refreshType=='addLevel'||refreshType=='cut')&&pasteLastObj){
if(griddata[i].parentId === pasteLastObj.parentId || griddata[i].parentId == pasteLastObj.id){
if(griddata[i].reqType == 'title' && ((griddata[i].isChanged && griddata[i].isChanged == "Y")||refreshType=='cut')){
if(griddata[i].reqLevel == level||refreshType=='cut') {
griddata[i].treeSort = num1 == 1&&refreshType!='cut'?pasteLastObj.treeSort+1:griddata[i].treeSort+1;
griddata[i].isChanged = 'Y';
} else {
griddata[i].treeSort=_sortId+1;
griddata[i].isChanged = 'Y';
}
}
_sortId++;
}
}
优化后的代码:
if (refreshType && (refreshType === 'addLevel' || refreshType === 'cut') && pasteLastObj) {
for (let i = 0; i < griddata.length; i++) {
const data = griddata[i];
const isTitle = data.reqType === 'title';
const isSameParent = data.parentId === pasteLastObj.parentId || data.parentId === pasteLastObj.id;
if (isTitle && (isSameParent || refreshType === 'cut')) {
const isSameLevel = data.reqLevel === level || refreshType === 'cut';
data.treeSort = num1 === 1 && refreshType !== 'cut' ? pasteLastObj.treeSort + 1 : data.treeSort + 1;
data.treeSort = isSameLevel ? data.treeSort : _sortId + 1;
data.isChanged = 'Y';
_sortId++;
}
}
}
优化方法:
-
合并if语句: 将多个嵌套的 if 语句合并成一个较长的 if 语句,避免多次判断条件,提高代码效率。
-
优化条件表达式: 简化条件表达式,使其更加简洁易读。例如,将
griddata[i].isChanged && griddata[i].isChanged == "Y"简化为griddata[i].isChanged === 'Y'。 -
提取常用的表达式和变量: 将重复出现的表达式和变量提取出来,避免重复计算和多余的赋值,提高代码可读性和效率。例如,将
griddata[i].reqType === 'title'提取为变量isTitle。 -
使用三目运算符简化代码: 使用三目运算符简化代码,使其更加简洁易读。例如,将
num1 == 1 && refreshType != 'cut' ? pasteLastObj.treeSort + 1 : griddata[i].treeSort + 1简化为num1 === 1 && refreshType !== 'cut' ? pasteLastObj.treeSort + 1 : data.treeSort + 1。
总结:
通过以上优化方法,代码更加简洁、易读、高效。同时,也提高了代码的可维护性。
原文地址: http://www.cveoy.top/t/topic/lrnE 著作权归作者所有。请勿转载和采集!