首頁 > web前端 > js教程 > Codewars - 降序

Codewars - 降序

Linda Hamilton
發布: 2025-01-05 10:39:43
原創
507 人瀏覽過

問候。

Codewars - Descending Order

我在這個系列中發布了 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);
  }
登入後複製

應該可以了。對嗎?

Codewars - Descending Order

不。一個微小的細節。魔鬼在於細節。錯誤也是如此。排序函數預設按升序排序。我們需要「恢復極性」。從本質上講,我們需要這個。預設行為是這樣的:

(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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板