在Javascript中将数字转换为三位数列表

时间:2016-11-10 17:20:01

标签: javascript algorithm ecmascript-6

我将大数字作为输入,并希望以千位(每3位数)的每一步显示一个小空格。所以我正在寻找一个最大的数组。三位数作为输出。

示例:

Input: 10       Output: [10]
Input: 1234     Output: [1, 234]
Input: 24521280 Output: [23, 521, 280]

输出数组是否包含字符串或数字无关紧要。

Javascript ES6中最优雅(全面/简短)的解决方案是什么?

我写了两个有效的解决方案,但我觉得它们过于复杂或者我错过了一些东西:

解决方案1)

function numberToThreeDigitArray(number) {
  if (number / 1000 < 1) return [number];

  return [
    ...numberToThreeDigitArray(Math.floor(number / 1000)),
    number % 1000
  ];
}

解决方案2)

function numberToThreeDigitArray(number) {
  return number.toString().split('').reverse().map((char, i) => {
    return i !== 0 && i % 3 === 0
      ? ' ' + char
      : char;
  }).join('').split('').reverse().join('').split(' ');
}

1 个答案:

答案 0 :(得分:0)

number.toLocaleString().split(',').map(num => +num)应该为你做。

请参阅toLocaleString MDN docs

示例:

const arr = (24521280).toLocaleString().split(',').map(num => +num)

// [24, 521, 280]

// or

function getNumber(n) {
  return n.toLocaleString().split(',').map(num => +num)
}