以扩展形式写数字

我正在做一些代码练习,即将创建一个函数expandedForm来接受一个数字参数,下面的例子会更清楚..


expandedForm(12); // Should return '10 + 2'

expandedForm(42); // Should return '40 + 2'

expandedForm(70304); // Should return '70000 + 300 + 4'

我的解决方案:


function expandedForm(num) {

  // Your code here

  let numStr = num.toString().split('');

  

  for(let i = 0 ; i < numStr; i++ ){

      

      for(let y = numStr.length; y > 1; y--){

         numStr[i] += '0'; 

         // console.log(y);  use this to debug y, and no y value print out from console

      }

  }

  

  return numStr.join('+')

}


console.log(expandedForm(23));

如果我测试 expandForm(23),结果是“2+3”,y 值也没有打印到控制台,谁能告诉我我的解决方案有什么问题?谢谢。


解决方案

谢谢大家,感谢您指出我的variable y初始 in for 循环不正确,i < numStr以及(愚蠢的错误)。


在查看我的代码并受到以下一些建议的启发后,我的最终解决方案是


 function expandedForm(num) {

      // Your code here

      let numStr = num.toString().split('');

      

      for(let i = 0 ; i < numStr.length; i++ ){

          

          for(let y = numStr.length - i; y > 1; y--){

             numStr[i] += '0'; 

             // console.log(y);  use this to debug y, and no y value print out from console

          }

      }

      

     

      numStr = numStr.filter(value => !value.startsWith(0));

      return numStr.join(' + ')

    }


    console.log(expandedForm(23));


交互式爱情
浏览 214回答 2
2回答

侃侃无极

您需要使用 (numStr.length -i) 初始化第二个循环 y,因为在扩展形式中,每次迭代都应减少零,这与您的情况不同。您还需要过滤结果并在 "70000 + 0+ 300 + 0 + 4 " ==> "70000 + 300 + 4 " 的情况下使用 filter numStr = numStr.filter(value => value !== '0');这应该打印正确的展开形式function expandedForm(num) {&nbsp; // Your code here&nbsp; let numStr = num.toString().split('');&nbsp; for(let i = 0 ; i < numStr.length; i++ ){&nbsp; &nbsp; &nbsp; if(numStr[i]!=0){&nbsp; &nbsp; &nbsp; for(let y = (numStr.length-i); y > 1; y--){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;numStr[i] += '0';&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //console.log(y);&nbsp; //use this to debug y, and no y value print out from console&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp;}&nbsp; }&nbsp; numStr = numStr.filter(value => value !== '0');&nbsp; return numStr.join('+')}console.log(expandedForm(23));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript