完成Kata时使用sort()实现数字降序排列失败,请求技术排查
问题分析与修复方案
我来帮你找出代码里的问题,这两个小细节错误导致了功能失效:
错误1:split(' ') 使用了错误的分隔符
你现在用空格' '来分割字符串,但数字转成字符串后(比如123456789变成"123456789")是没有空格的,所以split(' ')会返回一个只包含原字符串的数组:["123456789"]。这样后续的sort根本没法对单个元素做排序,自然得不到降序结果。
正确的做法是用空字符串''分割,这样才能把每个字符拆成独立的数组元素:
n.toString().split('')
错误2:join() 没有指定分隔符
join()方法如果不传参数,默认会用逗号,来连接数组元素。比如即使你正确分割并排序后,得到的会是"9,8,7,6,5,4,3,2,1",用parseInt转换时只会取第一个数字9,这显然不是你想要的。
需要传入空字符串''来让字符直接拼接:
.join('')
修正后的完整代码
function descendingOrder(n) { let newN = n.toString().split('').sort(function(a, b) { return b - a; }).join(''); return parseInt(newN); }
现在你测试输入123456789,就能得到预期的987654321了,输入0或1的场景也能正常工作。
内容的提问来源于stack exchange,提问作者VisualXZ
相关产品推荐
相关产品推荐

