使用 sort() 按降序排列数字

Vis*_*lXZ 5 javascript sorting

我正在努力完成这个。试图弄清楚这一点,我已经看到了这个线程,但我认为我正在按照其中的说明进行操作。

我究竟做错了什么?为什么它不按降序对数字进行排序?到目前为止,这是我的代码:

function descendingOrder(n){
  let newN = n.toString().split(' ').sort(function(a,b){return b-a}).join();
  return parseInt(newN);
}
Run Code Online (Sandbox Code Playgroud)

测试通过:值 == 0 测试通过:值 == 1 预期:987654321,而不是:123456789

提前致谢

Nin*_*olz 6

您需要用空字符串拆分字符串''以获得单位数字,然后用空字符串将其连接起来。

使用不属于字符串的字符进行拆分会产生一个具有单个值的数组。后来加入的数组返回这个单个元素。这就是为什么你得到与输入相同的结果值。

Array#join如果没有指定分隔符,则返回包含值的逗号分隔字符串。

let newN = n.toString().split('').sort(function (a, b) { return b - a; }).join('');
Run Code Online (Sandbox Code Playgroud)

最后,您可以采用一元加号+,例如

return +newN;
Run Code Online (Sandbox Code Playgroud)

以获得数值。

顺便说一句,通过使用parseInt,您可以指定基数,因为带有前导零的字符串可能会转换为八进制数。