Javascript 对整数进行排序';按降序排列的数字
假设我们有一个数字-123456,为了简单起见。我需要一个函数,将其作为输入并返回654321,或者说53283940,同样将返回98543320 我有一些东西似乎是有效的,我只是不确定它是否是用最佳实践完成的,它似乎可以被重新分解成更干净的东西。这是我的东西,有什么帮助吗?我是新来的,正在努力提高,谢谢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
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)]。排序()。反转()。连接(“”)