首頁  >  問答  >  主體

將給定數組中每個單字的前三個字母大寫的函數。

<p>我寫了一個函數,它接受一個單字並將前三個字母大寫。現在我需要在一個單字數組上運行相同的函數,以便傳回每個單字的前三個字母大寫。我看到有很多人在問如何將句子中每個單字的第一個字母大寫,但這不是同一件事。我必須使用我已經寫好的函數,這樣當我使用console.log列印它時,它的輸出看起來像這樣:</p> <pre class="brush:php;toolbar:false;">console.log(applyAll(['str1', 'str2', 'str3', 'str4'], capitalizeThreeLetters));</pre> <p>我嘗試使用for迴圈來實現這個,但回傳的是所有單字連在一起的結果。在我的研究中,我看到可以使用forEach()方法在陣列元素上運行函數,但我無法弄清楚如何應用它。 </p> <pre class="brush:php;toolbar:false;">//Function that takes in str returns it with three first letters capitalized function capitalizeThreeLetters(str){ let capFirst = str[0].toUpperCase(); let capSecond = str[1].toUpperCase(); let capThird = str[2].toUpperCase(); let splitStr = str.slice(3); let wholeStr = capFirst capSecond capThird splitStr; return wholeStr; } console.log(capitalizeThreeLetters('testing')); // => returns 'TESting' console.log(capitalizeThreeLetters('again')); // => returns 'AGAin' //Function that takes in a string array and applies capitalizeThreeLetters function to each array element so each word is returned with first three letters capitalized function applyAll(arr){ for (let i = 0; i < arr.length; i ){ return capitalizeThreeLetters(arr); } } console.log(applyAll(['mai', 'brian', 'jeho', 'han'], capitalizeThreeLetters)); // => returns 'MAIBRIANJEHOhan' // => should return ['MAI', 'BRIan', 'JEHo', 'HAN']</pre> <p><br /></p>
P粉899950720P粉899950720423 天前455

全部回覆(1)我來回復

  • P粉331849987

    P粉3318499872023-07-30 00:31:04

    你的applyAll函數並沒有照你想要的方式運作。當你返回時,函數立即退出。在這種情況下,你在循環內部返回,阻止了循環繼續執行和運行其他兩個迭代。

    你的第二個問題是,你將整個陣列傳給了capitalizeThreeLetters,而不是一個單字。你可能會想要使用capitalizeThreeLetters(arr[i])。現在,你傳遞了整個數組,導致數組中的前三個單字被大寫,而不是每個單字的前三個字母。

    你可以使用map方法來修復它:

    #
    function applyAll(arr){
      return arr.map(capitalizeThreeLetters);
    }
    

    在陣列上使用map函數將會對陣列的每個元素呼叫一個函數,然後傳回一個包含結果的新陣列。

    回覆
    0
  • 取消回覆