gpt4 book ai didi

javascript - Array.map() vs for loop when title-casing a string

转载 作者:行者123 更新时间:2023-11-29 21:08:32 25 4
gpt4 key购买 nike

我正在研究一个 FreeCodeCamp 算法问题,要求我对给定字符串进行标题大小写,例如将每个单词的首字母大写。我设法使用以下代码做到了这一点:

function titleCase(str) {
var wordArr = str.split(" ");
for(var i=0; i<wordArr.length; i++){
wordArr[i] = wordArr[i].charAt(0).toUpperCase() + wordArr[i].slice(1).toLowerCase();
}
return wordArr.join(" ");

}

但我开始尝试以如下方式使用 array.map():

function titleCase(str) {
var wordArr = str.split(" ");
var newArr = wordArr.map(function(word){
word = word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
return newArr;

}

我什至懒得尝试连接(即使用 .join())数组,因为它是一个 null 值数组。为什么 array.map() 在这种情况下不起作用?还是我只是在某个地方犯了一个愚蠢的错误?

最佳答案

Array.prototype.map 接受一个函数,该函数采用原始值并且应该返回一个投影值。
您的函数不返回任何内容,它只是重新分配 word 值,这不会影响任何内容,因为 word 是局部变量。

这是 map 函数的正确用法:

var wordArr = str.split(" ");
var newArr = wordArr.map(function(word){
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
return newArr;

演示:

function titleCase(str) {
return str.split(" ").map(function(word){
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
}

console.log(titleCase("hello") + " " + titleCase("world") + "!");

关于javascript - Array.map() vs for loop when title-casing a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42777742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com