首頁>技術>

介紹

“如何逆向輸出JavaScript中的字串?”是面試中最常被問到的問題之一,尤其是如果你是一名新人或者缺乏經驗的話。可能有幾十種方法可以倒轉一個字串。然而,在本文中,我們將學習在JavaScript中倒轉字串的三種不同方法。

我們將在本文中使用的字串是“hello world!”但是,這些方法可以處理您想要反轉的任何字串。

const str = 'hello world!';    // 逆向輸出的結果: !dlrow olleh
使用Split, Reverse, Join

在第一個方法中,我們將使用JavaScript內建的split、reverse和join方法來逆轉字串。

const str = 'hello world!';    // 步驟 1:  const strChunks = str.split("");  console.log(strChunks); // 輸出: ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]    // 步驟 2:  const strChunksReverse = strChunks.reverse();  console.log(strChunksReverse); // 輸出: ["!", "d", "l", "r", "o", "w", " ", "o", "l", "l", "e", "h"]    // 步驟 3:  const strReverse = strChunksReverse.join("");  console.log(strReverse); // 輸出: !dlrow olleh 

正如您在上面的程式碼中看到的,在第一步中,我們使用split方法將字串“hello world”分割成一個數組,陣列中的每個元素表示字串的單個字元。傳遞給split方法的引數是一個沒有空格的空字串。下一步,我們將使用JavaScript的原生reverse方法對陣列中的元素進行反轉。在最後一步,我們用join方法連線陣列元素也就是字串的字元。

我們不必將每個操作寫在單獨的語句中,而是將方法連結起來,並在一行中執行所有操作。

const str = 'hello world!';  const strReverse = str.split('').reverse().join('');  console.log(strReverse); // 輸出: !dlrow olleh  

上面的程式碼片段將產生與前一個程式碼塊相同的輸出。

使用 for迴圈

接下來,我們將使用一個簡單的for迴圈來反轉字串

const str = "hello world!";    let strReverse = "";        for (let i = str.length - 1; i >= 0; i--) {        strReverse = strReverse + str[i];    }        console.log(strReverse);    // 輸出: !dlrow olleh   

正如您在上面的程式碼片段中所看到的,我們正在建立一個變數strReverse,它包含一個空字串(其中不包含空格)。接下來我們要做的是,我們要用for迴圈遍歷需要反轉的字串。迴圈中i的初始值是str.length - 1。在每次迭代之後,我們都會遞減i的值。迴圈將繼續,直到它到達字串的第一個字元,即單詞hello中的h。在每次迭代中,我們都將字元連線到strReverse變數。

使用遞迴

我們也可以使用遞迴反轉字串,遞迴只是一個函式直接或間接呼叫自身的過程。

const message = "hello world!";  function reverse(value) {      return value === '' ? '' : reverse(value.slice(1)) + value.charAt(0);    };    console.log(reverse(message));  // 輸出: !dlrow olleh  

上面的函式做的第一件事是檢查作為引數傳遞給它的字串是否為空。如果是,它將返回一個空字串。如果條件為false,它將簡單地呼叫自己並再次傳遞字串值,但這一次它將刪除第一個字元並傳遞字串的其餘部分,並在return語句的末尾追加第一個字元。

讓我們用一個更簡單的例子來理解這一點。假設我們將字串'abc'傳遞給函式:

console.log(reverse('abc'));  // 輸出: cba   

上面的程式碼將呼叫反向函式四次。第一次我們手動呼叫它,3次它會用遞迴呼叫自己。

第一次:reverse('abc')將返回reverse('bc') + 'a'第二次:reverse('bc')將返回reverse('c') + 'ba'第三次:反向('c')將返回反向(") + 'cba'第四次:reverse("),它將返回一個空字串,結束遞迴過程。

13
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • C#服務端獲取小程式手機號碼