JavaScript 代码优化:合并if语句、简化表达式、提取变量

这段代码用于根据不同的条件更新 griddata 数组中的 treeSortisChanged 属性。以下是优化后的代码,并解释了优化方法:

原始代码:

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++;
    }
  }
}

优化方法:

  1. 合并if语句: 将多个嵌套的 if 语句合并成一个较长的 if 语句,避免多次判断条件,提高代码效率。

  2. 优化条件表达式: 简化条件表达式,使其更加简洁易读。例如,将 griddata[i].isChanged && griddata[i].isChanged == "Y" 简化为 griddata[i].isChanged === 'Y'

  3. 提取常用的表达式和变量: 将重复出现的表达式和变量提取出来,避免重复计算和多余的赋值,提高代码可读性和效率。例如,将 griddata[i].reqType === 'title' 提取为变量 isTitle

  4. 使用三目运算符简化代码: 使用三目运算符简化代码,使其更加简洁易读。例如,将 num1 == 1 && refreshType != 'cut' ? pasteLastObj.treeSort + 1 : griddata[i].treeSort + 1 简化为 num1 === 1 && refreshType !== 'cut' ? pasteLastObj.treeSort + 1 : data.treeSort + 1

总结:

通过以上优化方法,代码更加简洁、易读、高效。同时,也提高了代码的可维护性。

JavaScript 代码优化:合并if语句、简化表达式、提取变量

原文地址: http://www.cveoy.top/t/topic/lrnE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录