正如標題所說,我需要制作一個函式,使句子中的每個第二個單詞都大寫,但不要觸及其他單詞。我有這個功能:(第一個如果在一個案例中只有一個詞)
它完成了它的作業,但是對于像“這是一個句子”這樣的句子,它會回傳“這是一個句子”,而我需要“這是一個句子”。
function largeLetters(sentence) {
return sentence.map((v, i) => i % 2 == 0 ? v.toLowerCase() : v.toUpperCase()).join(' ');
}
function sentenceToUpperCase(sentence) {
sentence = sentence.split(' ');
if (sentence.length == 1) {
sentence = sentence.toString().toUpperCase();
return sentence;
} else {
return largeLetters(sentence)
};
};
console.log(sentenceToUpperCase("ThIs iS A seNteNCe"))
uj5u.com熱心網友回復:
我已經簡化了你的程式。
問題出在這部分:
i % 2 == 0 ? word.toLowerCase() : word.toUpperCase()
您不需要將所有其他單詞更改為小寫,只需保持原樣即可:
i % 2 == 0 ? word : word.toUpperCase()
function sentenceToUpperCase(sentence) {
return sentence
.split(' ')
.map((word, i) => i % 2 == 0 ? word : word.toUpperCase())
.join(' ');
};
console.log(sentenceToUpperCase("ThIs"))
console.log(sentenceToUpperCase("ThIs iS"))
console.log(sentenceToUpperCase("ThIs iS A"))
console.log(sentenceToUpperCase("ThIs iS A seNteNCe"))
uj5u.com熱心網友回復:
改變
i % 2 == 0 ? word.toLowerCase() : word.toUpperCase()
到
i % 2 == 0 ? word : word.toUpperCase()
function largeLetters(sentence) {
return sentence.map((v, i) => i % 2 == 0 ? v : v.toUpperCase()).join(' ');
}
function sentenceToUpperCase(sentence) {
sentence = sentence.split(' ');
if (sentence.length == 1) {
sentence = sentence.toString().toUpperCase();
return sentence;
} else {
return largeLetters(sentence)
};
};
console.log(sentenceToUpperCase("ThIs iS A seNteNCe"))
uj5u.com熱心網友回復:
你的代碼有一個三元 if(condition ? true : false)和里面你正在呼叫toLowerCase()or toUpperCase(),這意味著通過這個 if 的所有內容都將被轉換為小寫或大寫。
sentence.map((v, i) => i % 2 == 0 ? v.toLowerCase() : v.toUpperCase())
這意味著:
if (i % 2 == 0) {
v.toLowerCase();
else {
v.toUpperCase();
}
因此,如果您只想處理偶數部分并保持奇數部分不變,則不需要呼叫v.toLowerCase().
function sentenceToUpperCase(sentence) {
let parts = sentence.split(" ");
return parts.map((part, i) => i % 2 == 0 ? part : part.toUpperCase()).join(" ");
}
sentence = "ThIs iS A SenTenCe with BoTh Upper and LoWer cases"
console.log(sentenceToUpperCase(sentence));
// ThIs IS A SENTENCE with BOTH Upper AND LoWer CASES
uj5u.com熱心網友回復:
當你說
這將使句子中的每個第二個單詞大寫
如果您的意思是“偶數值”,那么使用value % 2 === 0else 只需更改陣列的第二個值。
更新偶數詞:
function sentenceToUpperCase(sentence) {
const words = sentence.split(' ');
if(words.length >= 2) {
return words.map((v,i) => i % 2 === 0 ? v : v.toUpperCase()).join(' ');
} else {
return sentence.toUpperCase();
}
}
只更新第二個字:
function sentenceToUpperCase(sentence) {
const words = sentence.split(' ');
if(words.length >= 2) {
words[1] = words[1].toUpperCase();
} else {
return sentence.toUpperCase();
}
return words.join(' ');
}
您可以使用三元和映射來“縮小”它
function sentenceToUpperCaseMinify(sentence) {
const words = sentence.split(' ');
return words.length >= 2 ? words.map((v, i) => i === 1 ? v.toUpperCase() : v).join(' ') : sentence.toUpperCase();
}
uj5u.com熱心網友回復:
很酷的問題,在 JS 中你有很多方法可以做到這一點。我用過的函式有:小寫、拆分、toUpperCase、join。我包裹在一個函式中。
const str = "this IS a SENTENCE"
function build(str) {
const s = str.split(' ');
// or use (str.toLowerCase()).split(' ') if every odd word have to be lowercase
let r = [];
let i = 0;
s.forEach((e) => {
if (i % 2 === 0) {
r.push(e)
} else {
r.push(e.toUpperCase())
}
i ;
})
return r.join(' ');
}
console.log('new Sentense: ', build(str) );
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/364893.html
標籤:javascript
