我希望我的程序只打印大写字母而不打印任何其他内容。当我提供console.log()命令时,它会打印所有内容,而不仅仅是大写字母。我找不到错误。
function spinalCase(str) {
let arr=[];
arr=Array.from(str);
for(let i=0;i<arr.length;i++){
if(arr[i]==="A"||"B"||"C"||"D"||"E"||"F"||"G"||"H"||"I"||"J"||"K"||"L"||"M"||"N"||"O"||"P"||"Q"||"R"||"S"||"T"||"U"||"V"||"W"||"X"||"Y"||"Z"){
console.log(arr[i]); //print only capital letters and nothing else
}
}
}
spinalCase('This Is Spinal Tap');
答案 0 :(得分:2)
你的问题就在这里。你是说render() {
const handlers = {
onPlaying: this.handlePlaying,
onEnd: this.handleEnd,
onPausing: this.handlePausing,
onSetSongs: this.handleSetSongs
}
return (
<AppContext.Provider value={{...this.state, ...handlers}}>
{this.props.children}
</AppContext.Provider>
)
}
或字符串“B”或字符串“C”......等(将评估为真)。相反,你必须写if arr[i] === "A"
但是,我会考虑使用正则表达式来使这更容易。
arr[i] === "A" || arr[i] === "B" ...
答案 1 :(得分:2)
您可能误解了逻辑OR ||
运算符和falsy values的概念。
arr[i]==="A"||"B"||"C" ...
这不会比较arr[i]==="A"
和arr[i]==="B"
等。相反,这意味着arr[i]==="A"
或"B"
不是假的,或"C"
不是假的, 等等。由于"B"
不是假的,因此该条件总是评估为真。
首先,您需要分别编写所有这些条件,
arr[i]==="A" || arr[i]==="B" ...
或者,您可以使用数组比较它们:
["A", "B", ..., "Z"].indexOf(arr[i]) >= 0