javascript - 使用 sort() 获取降序排列的数字

标签 javascript sorting

我正在努力完成这个 kata 。试图弄清楚,我已经看到了这个 thread,但我想我正在按照其中的说明去做。

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

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

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

提前致谢

最佳答案

您需要用空字符串 '' 拆分字符串以获得单个数字,然后用空字符串连接它。

用不属于字符串的字符拆分会导致数组具有单个值。稍后连接的数组返回此单个元素。这就是为什么您获得与输入相同的结果的原因。

Array#join没有指定的分隔符,返回一个逗号分隔的字符串和值。

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

最后,您可以使用 unary plus + , 喜欢

return +newN;

用于获取数值。

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

关于javascript - 使用 sort() 获取降序排列的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49602462/

相关文章:

javascript - 光滑 slider 中的断点有什么用?

javascript - 循环二进制索引

javascript - 为什么 Babel 6 有一些(不必要的)代码转换

javascript - 为什么 Angular orderBy 自定义比较器不起作用?

javascript - 无法使用 Jquery 将 li 追加到 ul 中

javascript - 如何检查我的 iPhone Safari 上运行的 Ajax 请求的状态?

c# - 字典列表排序

c# - 将数据收集到一个对象中并在 .NET/C# 中对其进行排序

c - 我必须对代码进行哪些更改才能对负数进行排序?

c++ - 根据另一个对象的值对类中的二维对象进行排序并赋值 C++