似乎无法弄清楚为什么我总是打印出额外的 0。
截至目前,如果值为 730,则会显示以下内容:
Expected: '700 + 30', instead got: '700 + 30 + 0'
标准:
“您将获得一个数字,您需要将其作为扩展形式的字符串返回。例如:
12 应该返回 10 + 2
42 应该返回 40 + 2
70304 应该返回 70000 + 300 + 4
注意:所有数字都是大于 0 的整数。"
function expandedForm(num) {
var i,
position,
numArr = Array.from(num.toString()).map(Number),
numArrLen = numArr.length,
result = '';
if(num < 10){
return num;
} else {
for(i = 0; i < numArrLen; i++){
position = numArrLen-1-i;
if( i === numArrLen-1 ){
result += numArr[i] * Math.pow(10, position);
console.log('done',result);
} else {
if(numArr[i] !== 0){
result += numArr[i] * Math.pow(10, position) + " + ";
console.log('keep going',result);
} else {
continue;
console.log('zero', result);
}
}
}
return result;
}
}
最佳答案
好吧,它进入第一个 if 检查,它不考虑零,所以你需要检查它是否在那次检查中为零。
if (i === numArrLen-1 && numArr[i]!==0)
之后你会遇到的问题是你会有一个尾随 +
。
我会做的不是添加字符串,而是推送到一个数组并加入
var result = []
result.push(30)
result.push(2)
console.log(result.join(" + ")
而且可以用数组的方法来实际求解。
(102030).toString().split("").map((n,i,a) => n*Math.pow(10, a.length-i-1)).filter(n => n>0).join(" + ")
关于javascript - 在通过 javascript 以扩展形式写入数字时打印出额外的 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45045514/