首页 > 解决方案 > 如果当前值大于 10,Javascript 循环添加到前一个值

问题描述

我正在尝试创建这个简单的逻辑,而我希望将数组值添加到先前的值中。例如下面的代码,18 应该携带 1 并添加到 9 并且 9 将是 10 然后携带 1 并添加到 7 并且将是 8 等等。我认为我在正确的轨道上,但我无法弄清楚其余的。

这是我正在研究的附加数学生成器。

var foo = [7, 9, 18];
var bar =  foo.map(i=>{
  return i % 10
})

console.log(bar) // [7,9,8]  I want it to be [8,0,8]

标签: javascriptecmascript-6

解决方案


您必须使用进位进行映射:

  let carry = 0;

  const result = [7, 9, 18].reverse().map(n => {
    n += carry;
    carry = Math.floor(n / 10);
    return n % 10;
 }).reverse();

如果进位溢出,要扩展结果,请添加:

 if(carry)
   result.unshift(...[...("" + carry)].map(Number));

推荐阅读