首页 > 解决方案 > 我如何将这些数字连接在一起?

问题描述

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() 但它不起作用。

标签: javascriptjoin

解决方案


尽管有多种方法,但这里有一些通用提示:

  • 可能不想输出一个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));


推荐阅读