问候。
我在本系列中发布了 Codewars 挑战和我的思考过程。我尽可能使用 JS 和 Node 18。只是为了清楚起见,我正在合理使用它们。
迎接 Codewars 的下一个挑战。在本教程中,我们的任务是开发一个接受任何整数作为输入的函数。我们必须将数字从最高到最低排序。
我从这个想法开始:
“好吧,我需要以某种方式分割数字。也许我应该先将整数转换为字符串。然后分割数字。然后排序,然后连接所有数字,然后恢复为整数”
所以,它从一个模板开始:
function descendingOrder(n){ // stringify number = n.toString(); // split digits array = new Array(number.length); // code that fills array with digits {} //sort array.sort() // concatenate digits reverse = array.join(''); // back to integer n = Number.parseInt(reverse); return n; }
很多信件,真无聊。而且仍然不起作用。那么,我们还需要什么呢?好吧,这是一个将数字放入数组中的循环,供初学者使用:
// split digits array = new Array(number.length); for(i=0 ; i<number.length ; i++){ array[i] = number.at(i); }
应该可以了。对吗?
不。一个微小的细节。魔鬼在于细节。错误也是如此。排序函数默认按升序排序。我们需要“恢复极性”。从本质上讲,我们需要这个。默认行为是这样的:
(a, b) => a - b
我们需要:
(a, b) => b - a
所有成分组合:
function descendingOrder(n){ number = n.toString(); array = new Array(number.length); for(i=0;i<number.length;i++){ array[i] = number.at(i); } array.sort((a,b)=>b-a) reverse = array.join(''); n = Number.parseInt(reverse); return n; }
不是最好的,也不是最简单的解决方案。但它确实起到了作用。
赛亚。喝水???.
上一页
以上是Codewars - 降序的详细内容。更多信息请关注PHP中文网其他相关文章!