javascript - 我如何将这些数字连接在一起?
问题描述
function expandedForm(num) {
let len = num.toString().length;
let n = num.toString().split("");
let result = "";
for (let i = 0; i < len; i++) {
result += n[i] + "0".repeat(len -1 -i).join(" + ");
}
return result;
}
我想做的是像这样分开数字:
1220 = "1000 + 200 + 20"
221 = "200 + 20 + 1"
我已经编写了代码(不是完美的代码),它为我提供了所有必要的值,但我很难将它们与“+”连接在一起。我尝试使用 .join() 但它不起作用。
解决方案
尽管有多种方法,但这里有一些通用提示:
- 可能不想输出一个
0
术语,除非输入数字完全正确0
(只有一个前导0
术语是相关的,因为它将是唯一的这样的术语) str.split('')
也可以是[...str]
- 无需将字符串拆分为数组即可访问字符
str.split('')[0]
也可以str[0]
- 可能想要断言这
num
是一个整数。 - 确保在问题中提供足够的测试用例来完全定义函数的行为。(如何处理尾随零、间隙零、前导零等。输入是否可以是字符串。)
function expandedForm(num) {
const s = num.toString();
const n = s.length - 1;
const result = [...s]
.map((char, index) => char + '0'.repeat(n - index))
.filter((str, index) => !index || +str)
.join(' + ');
return result;
}
console.log(expandedForm(1220));
console.log(expandedForm(221));
console.log(expandedForm(10203));
console.log(expandedForm(0));
console.log(expandedForm(2n**64n));
推荐阅读
- slider - Shopify 图片宽度滑块不起作用
- html - 将文本居中到圆形 div
- dart - Flutter:初始化器中的条件
- c++ - C++,无法得到逻辑
- java - 互联网连接更改时自动重新加载 webview
- java - RxJava/RxAndroid 中的 PublishSubject 导致崩溃 onError 并跳过 onNext
- python - 使用 findall() 和 search() 的奇怪正则表达式问题
- acumatica - 库存转移和收据中的 Javascript 问题
- solr - 调整 DIH Apache Solr
- android - Android Studio 不显示带有 Flutter 的 Logcat