將給定數組中每個單字的前三個字母大寫的函數。
P粉899950720
2023-07-29 10:09:17
<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>
你的applyAll函數並沒有照你想要的方式運作。當你返回時,函數立即退出。在這種情況下,你在循環內部返回,阻止了循環繼續執行和運行其他兩個迭代。
你的第二個問題是,你將整個陣列傳給了capitalizeThreeLetters,而不是一個單字。你可能會想要使用capitalizeThreeLetters(arr[i])。現在,你傳遞了整個數組,導致數組中的前三個單字被大寫,而不是每個單字的前三個字母。
你可以使用map方法來修復它:
#在陣列上使用map函數將會對陣列的每個元素呼叫一個函數,然後傳回一個包含結果的新陣列。