我正在做一些代码练习,即将创建一个函数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));
2 回答
侃侃无极
TA贡献2051条经验 获得超10个赞
您需要使用 (numStr.length -i) 初始化第二个循环 y,因为在扩展形式中,每次迭代都应减少零,这与您的情况不同。
您还需要过滤结果并在 "70000 + 0+ 300 + 0 + 4 " ==> "70000 + 300 + 4 " 的情况下使用 filter numStr = numStr.filter(value => value !== '0');
这应该打印正确的展开形式
function expandedForm(num) {
// Your code here
let numStr = num.toString().split('');
for(let i = 0 ; i < numStr.length; i++ ){
if(numStr[i]!=0){
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 !== '0');
return numStr.join('+')
}
console.log(expandedForm(23));
添加回答
举报
0/150
提交
取消