javascript - 在通过 javascript 以扩展形式写入数字时打印出额外的 0

标签 javascript algorithm

似乎无法弄清楚为什么我总是打印出额外的 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/

相关文章:

javascript - 为什么将 Arrow 函数体包裹在括号中

javascript - jQM POST 表单通过 JS 显示 "Error Loading Page"

javascript - 在窗口调整大小时按比例调整 div 的宽度和高度

javascript - 将数字插入已排序的数字数组的有效方法?

用于查找合适的替代词、缩写或单词速记的算法或 API

python - 使用权重分配整数?如何计算?

javascript - 有没有办法删除 jQuery 中的所有命名空间绑定(bind)?

javascript - 如何使用 Backbone Marionette CompositeView 显示嵌套的模型集合?

python - 在没有递归python的情况下生成具有最大值n-1的n乘n列表的所有排列

java - Big O 分析中方法调用和返回语句的成本是多少?