需要接收:
数字化(12345) -> 5,4,3,2,1
我写了一个代码:
function digitize(n) {
let arr = Array.from(n + '');
return arr.reverse();
}
console.log(digitize(12345));输出:'5','4','3','2','1‘
这是非常接近,但这是一个字符串数组。我怎样才能得到一个数字数组(没有引号)呢?
发布于 2022-04-27 20:25:11
您可以使用Array.from映射( Number的第二个参数)。
这种方法只适用于等于或小于Number.MAX_SAFE_INTEGER (9007199254740991)的正整数。
function digitize(n) {
return Array
.from(n.toString(), Number)
.reverse();
}
console.log(digitize(12345));
发布于 2022-04-27 20:31:20
您可以考虑递归函数,并在不转换为string的情况下这样做:
function digitize(n) {
return n < 10 ? [n] : [n % 10, ...digitize(Math.floor(n / 10))];
}
console.log(digitize(12345));
发布于 2022-04-27 20:31:45
我不会在这里走“烦人的”、多才多艺的、想必效率较低的路线:
function digitize(n) {
const digits = [];
while (n >= 1) {
digits.push(n % 10);
n = Math.floor(n / 10);
}
return digits;
}或者使用do-while取决于您是否希望digitize(0)成为[0]而不是[]
function digitize(n) {
const digits = [];
do {
digits.push(n % 10);
n = Math.floor(n / 10);
} while (n >= 1)
return digits;
}然而,由于精度问题,对于一些大型浮标来说,这仍然会失败。
https://stackoverflow.com/questions/72034878
复制相似问题