在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 能不能幫忙把 for循環(huán)中的代碼優(yōu)化一下?

能不能幫忙把 for循環(huán)中的代碼優(yōu)化一下?

if(this.state.dataPercentage != null && this.state.dataPercentage != '')
        {
            var dataPercentage = this.state.dataPercentage;

            var positiveInt = /^[0-9]*[1-9][0-9]*$/; //正整數(shù)
            // str為你要判斷的字符
            var dataPercentageStr= dataPercentage.toString();

            var percentageDecimals = 1;
            if( positiveInt.test(dataPercentageStr) ){
                //console.log('正整數(shù)')
            } else {
                //console.log('不是正整數(shù)=='+ dataPercentageStr)

                var dataPercentageStrB   = dataPercentageStr.split(".");
                percentageDecimals = dataPercentageStrB[1]; // 獲取小數(shù)部分
            }

            if(dataPercentage.toString().indexOf('.')>-1){ // 小數(shù)
                dataPercentage = parseInt(dataPercentage)+1
            }

            if(dataPercentage%4 == 0){
                //for( var ir =1; ir<6; ir++) //上面畫1個 這里畫5個 總共畫6個
                var a1 = numberTotal-this.state.dataPercentage/4;
                console.log('總共畫=='+ a1)
                for( var ir=1; ir<numberTotal-this.state.dataPercentage/4; ir++)
                {
                    pathRoute += ' M'+startX+' '+6*ir;
                    pathRoute += ' L'+endX+' '+6*ir;
                    pathRoute += ' L'+endX+' '+(4+6*ir);
                    pathRoute += ' L'+startX+' '+(4+6*ir);
                    pathRoute += ' Z';
                }

                for( var irb =numberTotal-this.state.dataPercentage/4; irb<numberTotal; irb++)
                {
                    pathRouteBlue += ' M'+startX+' '+6*irb;
                    pathRouteBlue += ' L'+endX+' '+6*irb;
                    pathRouteBlue += ' L'+endX+' '+(4+6*irb);
                    pathRouteBlue += ' L'+startX+' '+(4+6*irb);
                    pathRouteBlue += ' Z';
                }
            } else {

                var Redundancy4 = Math.ceil(this.state.dataPercentage/4) // 向上取整,有小數(shù)就整數(shù)部分加1
                console.log('Redundancy4==' +Redundancy4)
                var nd = numberTotal - Redundancy4;

                console.log('nd4=='+ nd)

                for( var ir=1; ir < nd; ir++)
                {
                    pathRoute += ' M'+startX+' '+6*ir;
                    pathRoute += ' L'+endX+' '+6*ir;
                    pathRoute += ' L'+endX+' '+(4+6*ir);
                    pathRoute += ' L'+startX+' '+(4+6*ir);
                    pathRoute += ' Z';
                }

                console.log('percentageDecimals=='+percentageDecimals)
            
            }
        }
回答
編輯回答
久舊酒

我看你幾個for循環(huán)的格式都是一樣的應該可以抽出來,而且變量的關鍵字最好用let吧看著舒服

/**
 * 
 * initValue  for循環(huán)的初始值
 * forArrayLength   要循環(huán)的那個數(shù)組的長度
 * finalString   最后生成的字符串
 */
function handleFor(initValue, forArrayLength, finalString) {
    for(let i = initValue; i < forArrayLength; i++) {
        finalString+= ' M'+startX+' '+6*i;
        finalString+= ' L'+endX+' '+6*i;
        finalString+= ' L'+endX+' '+(4+6*i);
        finalString+= ' L'+startX+' '+(4+6*i);
        finalString+= ' Z'; 
    }
    return finalString
} 
2017年10月18日 07:30
編輯回答
清夢
// 把重復的抽離出來
 function add(who, num) {
    who += ' M' + startX + ' ' + 6 * num
    who += ' L' + endX + ' ' + 6 * num
    who += ' L' + endX + ' ' + (4 + 6 * num)
    who += ' L' + startX + ' ' + (4 + 6 * num)
    who += ' Z'
    return who
  }
// 換成下面的

  if (dataPercentage % 4 == 0) {
    //for( var ir =1; ir<6; ir++) //上面畫1個 這里畫5個 總共畫6個
    var a1 = numberTotal - this.state.dataPercentage / 4
    console.log('總共畫==' + a1)

    for (var ir = 1; ir < numberTotal - this.state.dataPercentage / 4; ir++) {
      pathRoute = add(pathRoute, ir)
    }

    for (var irb = numberTotal - this.state.dataPercentage / 4; irb < numberTotal; irb++) {
      pathRouteBlue = add(pathRoute, irb)
    }
  } else {
    var Redundancy4 = Math.ceil(this.state.dataPercentage / 4) // 向上取整,有小數(shù)就整數(shù)部分加1
    console.log('Redundancy4==' + Redundancy4)
    var nd = numberTotal - Redundancy4

    console.log('nd4==' + nd)

    for (var ir = 1; ir < nd; ir++) {
      pathRoute = add(pathRoute, ir)
    }

    console.log('percentageDecimals==' + percentageDecimals)
  }
}

希望沒看走眼你的代碼。。太多了沒仔細看

2017年12月14日 22:51