首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个数字中获取一个没有括号的数字数组

从一个数字中获取一个没有括号的数字数组
EN

Stack Overflow用户
提问于 2022-04-27 20:23:11
回答 4查看 81关注 0票数 1

需要接收:

数字化(12345) -> 5,4,3,2,1

我写了一个代码:

代码语言:javascript
复制
function digitize(n) {
let arr = Array.from(n + '');
return arr.reverse();
}

console.log(digitize(12345));

输出:'5','4','3','2','1‘

这是非常接近,但这是一个字符串数组。我怎样才能得到一个数字数组(没有引号)呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-04-27 20:25:11

您可以使用Array.from映射( Number的第二个参数)。

这种方法只适用于等于或小于Number.MAX_SAFE_INTEGER (9007199254740991)的正整数。

代码语言:javascript
复制
function digitize(n) {
    return Array
        .from(n.toString(), Number)
        .reverse();
}

console.log(digitize(12345));

票数 5
EN

Stack Overflow用户

发布于 2022-04-27 20:31:20

您可以考虑递归函数,并在不转换为string的情况下这样做:

代码语言:javascript
复制
function digitize(n) {
    return n < 10 ? [n] : [n % 10, ...digitize(Math.floor(n / 10))];
}

console.log(digitize(12345));

票数 2
EN

Stack Overflow用户

发布于 2022-04-27 20:31:45

我不会在这里走“烦人的”、多才多艺的、想必效率较低的路线:

代码语言:javascript
复制
function digitize(n) {
    const digits = [];
    while (n >= 1) {
        digits.push(n % 10);
        n = Math.floor(n / 10);
    }
    return digits;
}

或者使用do-while取决于您是否希望digitize(0)成为[0]而不是[]

代码语言:javascript
复制
function digitize(n) {
    const digits = [];
    do {
        digits.push(n % 10);
        n = Math.floor(n / 10);
    } while (n >= 1)
    return digits;
}

然而,由于精度问题,对于一些大型浮标来说,这仍然会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72034878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档