将给定数组中每个单词的前三个字母大写的函数。
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函数将会对数组的每个元素调用一个函数,然后返回一个包含结果的新数组。