我正在研究一个FreeCodeCamp算法问题,我被要求标题化一个给定的字符串,就像使每个单词的首字母大写一样。我设法使用此代码:
.join()
但我开始尝试以这样的方式使用array.map():
array.map()
我甚至懒得尝试连接(即使用var mydata = [array_name, array_score]
)数组,因为它是一个 null 值的数组。为什么<div class="lable_time">
<div class="stime">
<select value="Start-Time">
<option selected value="null">Start-Time*</option>
<option value="1:00">1:00</option>
<option value="2:00">2:00</option>
</select>
</div>
<div class="stime_meridian">
<select value="AM-PM">
<option selected value="null">AM</option>
<option value="PM">PM</option>
</select>
</div>
<div class="time">
<select value="End-Time">
<option selected value="null">End-Time*</option>
<option value="1:00">1:00</option>
<option value="2:00">2:00</option>
</select>
</div>
<div class="time_meridian">
<select value="AM-PM">
<option selected value="null">AM</option>
<option value="PM">PM</option>
</select>
</div>
</div>
没有在这种情况下工作?或者我只是在某个地方犯了一个愚蠢的错误?
答案 0 :(得分:2)
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") + "!");
&#13;
答案 1 :(得分:0)
您应该在地图功能
内返回示例代码:
function titleCase(str) {
var wordArr = str.split(" ");
var newArr = wordArr.map(function(word){
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
return newArr.join(' ');
}
答案 2 :(得分:0)
为什么
array.map()
在这种情况下没有工作?
根据.map()的MDN文档:
map()方法创建一个新数组,其中结果在此数组中的每个元素上调用提供的函数。
在该语句中暗示,.map()需要来自每次调用的结果,并且为此使用return关键字为每次迭代发回值。否则,该值(即分配给word
)未被使用(在回调函数之外)。请参阅下面的代码中演示的内容。
function titleCase(str) {
return str.split(" ").map(function(word){
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
}
console.log(titleCase("title case this string"));
P.S。如果您想了解更多关于Javascript函数式编程的知识,我建议您浏览this page上的练习。