亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

es6如何實現字符串反轉

發布時間:2022-11-01 09:44:18 來源:億速云 閱讀:132 作者:iii 欄目:web開發

本篇內容介紹了“es6如何實現字符串反轉”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

實現方法:1、用split、reverse和join函數,語法“str.split('').reverse().join('');”;2、用遞減的for循環,語法“for(i=字符串長度-1;i>=0;i--){nS+=str[i];}”;3、用遞歸,語法“function f(s){return s===''?'':f(s.substr(1))+s.charAt(0)}”。

反轉字符串 是技術面試中最常問到的 JavaScript 問題之一。 面試官可能會要求你使用不同的編碼方式來反轉字符串,或者他們可能會要求你不使用內置方法來反轉字符串,甚至會要求你使用遞歸來反轉字符串。

可能有數十種不同的方法可以執行此操作,但內置reverse方法除外,因為 JavaScript 的 String 對象上沒有此方法

以下是我解決 JavaScript 反轉字符串問題的三種最有趣的方法。

算法要求

反轉提供的字符串.
你可能需要將字符串轉換為數組,然后才能將其反轉.
你的結果必須是字符串.

function reverseString(str) {
    return str;
}
reverseString('hello');
提供測試用例
  • reverseString(“hello”) 應該返回 “olleh”

  • reverseString(“Howdy”) 應該返回 “ydwoH”

  • reverseString(“Greetings from Earth”) 應該返回 ”htraE morf sgniteerG”

1. 使用內置方法反轉字符串

對于此解決方案,我們將使用三種方法:String.prototype.split() 方法,Array.prototype.reverse() 方法和 Array.prototype.join() 方法。

  • split() 方法使用指定的分隔符字符串將一個 String 對象分割成子字符串數組,以一個指定的分割字串來決定每個拆分的位置

  • reverse() 方法將數組中元素的位置顛倒,并返回該數組。數組的第一個元素會變成最后一個,數組的最后一個元素變成第一個。該方法會改變原數組

  • join() 方法將一個數組(或一個類數組對象)的所有元素連接成一個字符串并返回這個字符串。如果數組只有一個項目,那么將返回該項目而不使用分隔符

function reverseString(str) {
    // Step 1. 使用 split()方法返回一個新數組
    var splitString = str.split(''); // var splitString = "hello".split("");
    // ["h", "e", "l", "l", "o"]

    // Step 2.使用 reverse()方法 翻轉數組
    var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse();
    // ["o", "l", "l", "e", "h"]

    // Step 3.使用 join()方法 組合所有的數組元素,從而變成一個新字符串
    var joinArray = reverseArray.join(''); // var joinArray = ["o", "l", "l", "e", "h"].join("");
    // "olleh"

    //Step 4. 返回翻轉后的字符串
    return joinArray; // "olleh"
}

reverseString('hello');
三個方法組合形成鏈式調用:
function reverseString(str) {
    return str.split('').reverse().join('');
}
reverseString('hello');

2. 用遞減的 for 循環反轉字符串

function reverseString(str) {
    // Step 1. 創建一個空字符串,用來存儲后面新創建的字符串
    var newString = '';

    // Step 2.創建for循環
    /* 循環的起點是(str.length-1),它對應于
        字符串的最后一個字符“o”
        只要i大于或等于0,循環就會繼續
        每次迭代后遞減i */
    for (var i = str.length - 1; i >= 0; i--) {
        newString += str[i]; // or newString = newString + str[i];
    }
    /* "hello"的length等于 5
        每次循環的公式: i = str.length - 1 and newString = newString + str[i]
        第一次循環:   i = 5 - 1 = 4,         newString = "" + "o" = "o"
        第二次循環:   i = 4 - 1 = 3,         newString = "o" + "l" = "ol"
        第三次循環:   i = 3 - 1 = 2,         newString = "ol" + "l" = "oll"
        第四次循環:   i = 2 - 1 = 1,         newString = "oll" + "e" = "olle"
        第五次循環:   i = 1 - 1 = 0,         newString = "olle" + "h" = "olleh"
    結束for循環*/

    // Step 3. 返回已翻轉的字符串
    return newString; // "olleh"
}

reverseString('hello');
刪除注釋:
function reverseString(str) {
    var newString = '';
    for (var i = str.length - 1; i >= 0; i--) {
        newString += str[i];
    }
    return newString;
}
reverseString('hello');

3. 用遞歸反轉字符串

對于此解決方案,我們將使用兩種方法:String.prototype.substr() 方法和 String.prototype.charAt() 方法

  • substr() 方法返回一個字符串中從指定位置開始到指定字符數的字符.

譯者注:

盡管 String.prototype.substr(……) 沒有嚴格被廢棄 (as in "removed from the Web standards"), 但它被認作是遺留的函數并且可以的話應該避免使用。它并非 JavaScript 核心語言的一部分,未來將可能會被移除掉。如果可以的話,使用 substring() 替代它.

'hello'.substr(1); // "ello"
  • charAt() 方法從一個字符串中返回指定的字符.

'hello'.charAt(0); // "h"

遞歸的深度等于 String 的長度。 當 String 很長且堆棧大小是主要問題的時候,代碼運行非常慢。所以此方案不是最佳解決方案

function reverseString(str) {
  if (str === "") // 如果傳入空字符串,則直接返回它
    return "";
  else
    return reverseString(str.substr(1)) + str.charAt(0);
/*
遞歸方法的第一部分
你需要記住不會只有一次回調,會存在多次嵌套回調
每次回調的公式: str === "?"                         reverseString(str.subst(1))     + str.charAt(0)
1st call – reverseString("Hello")   will return   reverseString("ello")           + "h"
2nd call – reverseString("ello")    will return   reverseString("llo")            + "e"
3rd call – reverseString("llo")     will return   reverseString("lo")             + "l"
4th call – reverseString("lo")      will return   reverseString("o")              + "l"
5th call – reverseString("o")       will return   reverseString("")               + "o"
遞歸方法的第二部分
該方法達一旦到if條件,嵌套最深的調用會立即返回
*/
刪除注釋:
function reverseString(str) {
    if (str === '') return '';
    else return reverseString(str.substr(1)) + str.charAt(0);
}
reverseString('hello');
使用三元表達式:
function reverseString(str) {
    return str === '' ? '' : reverseString(str.substr(1)) + str.charAt(0);
}
reverseString('hello');

JavaScript 字符串反轉 是一種小型且簡單的算法,在電話技術篩查或技術面試中都可能被問到。 你可以采用最簡單的方式解決此問題,也可以采用遞歸或更復雜的解決方案來解決。

“es6如何實現字符串反轉”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

es6
AI

裕民县| 南木林县| 安塞县| 辽阳县| 资讯| 丰城市| 嘉义县| 仪征市| 怀柔区| 兰溪市| 北碚区| 西宁市| 宁晋县| 宁国市| 洞口县| 芦山县| 凤翔县| 稻城县| 阳信县| 湘潭市| 新兴县| 临清市| 永康市| 林甸县| 葵青区| 韩城市| 万安县| 和顺县| 甘洛县| 肃宁县| 大关县| 蚌埠市| 班戈县| 阿城市| 宾川县| 九台市| 高要市| 朔州市| 谷城县| 比如县| 河曲县|