forEach中的Javascript三元操作符返回undefined
Javascript ternary operator inside forEach returns undefined
我试图编写一个函数,该函数需要一个字符串,并将每个单词中的第一个字母大写,该单词不包括在" minorWords "字符串中。我的代码中缺少什么导致返回值为"未定义"?在以几种不同的方式编写这个函数之后,我现在认为我只是错误地使用了。foreach。我相当确定我正确地使用了三元操作符,但是我尝试替换if语句并得到了相同的结果(未定义)。我也不确定为什么未定义被返回两次…
function titleCase1(title, minorWords) {
var titleArray = title.split(" ");
var minorArray = minorWords.split(" ");
var newArray = titleArray.forEach(function(word){
(word in minorArray)? word :
word[0].toUpperCase() + word.slice(1);
})
console.log(newArray);
}
titleCase1("the wind in the willows", "the in");
// -> undefined undefined
我意识到,如果这工作,第一个"the"将不会大写,但我会弄清楚,一旦我不再滥用我在这里的工具…
你的代码有两个问题:
-
forEach
所做的唯一事情是对数组中的每个元素执行回调,并且不返回任何东西,因此newArray
将始终是undefined
。作为参考,请检查forEach
在这里是如何工作的。如果你想创建一个新的数组值,就像你试图用
newArray
做的那样。您需要使用map
,但实际上需要从回调返回一个值。参考map
如何工作在这里 -
您不能使用
in
操作符来查看一个单词是否存在于您的数组中。in
操作符只检查指定的属性是否存在于指定的对象中。因此,当用于检查数组内部的元素时,它总是返回false
。因为javascript中的数组实际上是一个对象!var a = ["一个","b","c"
);是
var a = {0:"一个",1:"b",2: ' c '
};因此
'a' in [ 'a', 'b', 'c' ]
将始终返回false
,例如0 in [ 'a', 'b', 'c' ]
将返回true
。由于这个警告,你应该改变你的方法,例如使用
indexOf
。参考indexOf
如何工作在这里
function titleCase1(title, minorWords) {
var titleArray = title.split(' ');
var minorArray = minorWords.split(' ');
var newArray = titleArray.map(function (word) {
// indexOf returns the elements index on match or -1.
var match = minorArray.indexOf(word) != -1;
// If there's a match, return the (lowercased) word, otherwise uppercase it.
return match ? word : (word[0].toUpperCase() + word.slice(1));
});
console.log(newArray);
}
titleCase1("the wind in the willows", "the in"); // [ 'the', 'Wind', 'in', 'the', 'Willows' ]
相关文章:
- 三元对短路
- JavaScript 中三元条件和逻辑和运算符的运算符优先级
- 三元运算符检查多个字符串
- 从数组中删除三元组项
- 用javascript中的三元运算符连接字符串
- 正在清理三元语句中的代码
- JS三元操作符vs if/else
- 如果else-工作,如果else与三元操作符不工作
- 传入一个<灯>当React中有三元操作符的数据时
- Javascript中的空检查(使用三元操作符)
- Javascript返回和三元操作符与var,可能的
- forEach中的Javascript三元操作符返回undefined
- 测试多个三元操作符的If语句
- 最快的方法是什么?三元操作符?开关吗?数组中
- 带空else的三元操作符
- 在Javascript中,是否可以将三元操作符's ' ?’然后下一行
- 有可能从javascript中的条件(三元)操作符中获得两个值吗?
- 三元操作符条件永远不为真,尝试多行ajax请求
- JavaScript reduce中的返回三元操作符
- JSX中的三元操作符,用于在react中包含HTML