Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对整数进行排序';按降序排列的数字_Javascript_Sorting_Digits - Fatal编程技术网

Javascript 对整数进行排序';按降序排列的数字

Javascript 对整数进行排序';按降序排列的数字,javascript,sorting,digits,Javascript,Sorting,Digits,假设我们有一个数字-123456,为了简单起见。我需要一个函数,将其作为输入并返回654321,或者说53283940,同样将返回98543320 我有一些东西似乎是有效的,我只是不确定它是否是用最佳实践完成的,它似乎可以被重新分解成更干净的东西。这是我的东西,有什么帮助吗?我是新来的,正在努力提高,谢谢 function descendingOrder(a){ let b = Array.from(a.toString()).map(Number); // map int into a

假设我们有一个数字-123456,为了简单起见。我需要一个函数,将其作为输入并返回654321,或者说53283940,同样将返回98543320

我有一些东西似乎是有效的,我只是不确定它是否是用最佳实践完成的,它似乎可以被重新分解成更干净的东西。这是我的东西,有什么帮助吗?我是新来的,正在努力提高,谢谢

function descendingOrder(a){
    let b = Array.from(a.toString()).map(Number); // map int into array
    let stringResult = b.sort().reverse().join(""); // sort in ascending, then reverse & join
    let intResult = ~~stringResult; // double bitwise operator to turn str to int
    return intResult; // return final int
}
试试这个:

const sortNumber=(a)=>Number([…(“”+a)].sort().reverse().join(“”);
常数test1=123456;
log(sortNumber(test1));
常数test2=53283940;

log(sortNumber(test2))这就是需要的。我们会为您提供一些优化,但它们都是相同的(但效率更高)。您不需要带有
编号的映射,因为您可以像以后一样按字符串排序。@NinaScholz:好的观点,谢谢。混合使用
数字
~
以两种不同的方式执行相同的操作可以得到改进。javascript数字的最大问题是它们的大小有限。因此,如果你在某个大函数上尝试你的函数,比如
1999999999
,结果会令人惊讶。它返回一个字符串,我需要它返回一个数字。很好的解决方案,否则!您可以使用“+”作为返回值的前缀,以强制转换为int:
(a)=>+数组。from(a.toString()).sort().reverse().join(“”)也可以使用双位前缀吗<代码>~~
是的,在一般情况下要小心截断浮点数though@exception-io,返回的是数字,强制转换为数字,如以下数字([…(“”+a)]。排序()。反转()。连接(“”)