Я пытаюсь написать функцию, которая берет строку и заглавывает первую букву в каждом слове, не включенном в строку «minorWords». Что отсутствует в моем коде, что приводит к тому, что возвращаемое значение будет «неопределенным»? После написания этой функции несколько разных способов, я теперь думаю, что я просто использую .forEach неправильно. Я вполне уверен, что я использую тернарный оператор соответствующим образом, но я попытался заменить оператор if и получил тот же результат (неопределенный). Я также не уверен, почему undefined возвращается дважды. , ,Javascript тернарный оператор внутри forEach возвращает undefined
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
Я понимаю, что, если это работает первый «» не будут капитализированы, но я не полагаю, что один раз я уже не злоупотребляя инструменты я здесь. , ,
Это потому, что ты ничего не делать с '' слово' или слово [0]. toUpperCase() + word.slice (1) '. Вероятно, вы выбрали 'map' вместо' forEach' и забыли «вернуть» значение. – Xufox
Взгляните на: http: // stackoverflow.com/questions/4878756/javascript-how-to-capitalize-first-letter-of-each-word-like-a-2-word-city – jwkicklighter
И 'undefined' не возвращается дважды, он возвращается один раз и _logged_ once , У вас нет оператора 'return' в' titleCase1'. – Xufox