Javascript程序只打印大写字母,没有别的

时间:2018-06-16 06:09:48

标签: javascript

我希望我的程序只打印大写字母而不打印任何其他内容。当我提供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');

2 个答案:

答案 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