如何在if语句中比较所有数组元素

时间:2019-02-21 19:05:59

标签: javascript arrays reactjs

我想检查登录的第一个字符是否为字母。我有一个包含所有字母的数组,并且试图比较一个语句中的所有元素。

inputHandler {
this.setState(
{login: event.target.value},
() => {
    for( var ch in chars2 ) {
        if(this.state.login[0] === chars2[ch]) {                            
        this.setState({message: 'Works'})
        } }
    } )
}

如果我将其与例如chars2 [3]它起作用。我也尝试了其他循环,但是没有用。有办法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用String.includes()在字符串中查找字符。由于您拥有event.target.value,因此无需等待setState,因此可以立即分配message属性。

const login = event.target.value;

this.setState({
    login,
    ...(chars2.includes(login[0]) && { message: 'Works' })
});

答案 1 :(得分:0)

计算机已经可以确定字母是什么了;为此使用正则表达式:)

if (/^[a-z]/i.test(this.state.login)) {
    //...
}

/分隔符表示“这是一个正则表达式”,^表示“匹配字符串的开头”,[a-z]表示“将任何字母从a匹配到z” ,结尾的i表示“区分大小写- i 不区分大小写”(不区分大小写),并且正则表达式的.test方法在满足以下条件时返回true模式在给定的字符串中找到。因此,这就是说“如果字符串的开头以任何字母开头,则返回true”:)