javascript - 如果当前值大于 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]
解决方案
您必须使用进位进行映射:
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));
推荐阅读
- amazon-web-services - 按日期过滤 s3 中的对象,而不是最后一次修改
- curl - curl splunk strftime 给出不可解析的 URI 编码请求数据
- excel - 需要一个 VBA 模块来循环遍历 word 文件、查找内容并在 Excel 电子表格中报告
- python - 根据上一行中的字符串获取数据框的值
- java - dynamodb 更新地图列表
- python - 如何在pyrhon的列表中找到每个部分的总和?
- javascript - 画布的元素旋转问题
- javascript - Framer-motion 拖动不尊重以前更新的道具
- c++ - 打印类型对的 C 说明符
- python - 如何在 matplotlib 动画中跟踪 patch.Rectangle 对象的路径?