介紹
“如何逆向輸出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("),它將返回一個空字串,結束遞迴過程。