我的If Else条件在React.js中无法正常工作

时间:2019-09-17 11:02:06

标签: reactjs

我在单击按钮时保存了一条记录,但始终会引发错误。

我包括一个if else条件。我已经超过了所有条件,但我的代码仍将转到if条件,但不应转到if条件。

代码是-

我的this.state.question.options值为-

[
    {
        id:3250,
        label:'good answer',
        assert:1
        position:1
    },
    {
        id:3249,
        label:'bad answer',
        assert:0
        position:2
    }
]

我正在检查其他条件是否为-

if (this.state.question.options.filter(o => o.assert === true).length <= 0) {
    hasError = true
    errorKey = 'add-question-modal-missing-assert-options'
}
else {
    alert("test");
}

我的代码应该转到其他部分,并将测试打印为警报,但是如果有部分并显示错误,则将进行检查。为什么?

我想展示其他部分,即测试为警报

5 个答案:

答案 0 :(得分:2)

在比较2个不同值时,您正在使用严格比较运算符(===)。在您的示例中,将1解析为整数,而将true解析为布尔值。严格的比较运算符用于检查相等值和相等类型上的2个值。

要解决代码中的错误,请使用松散比较(==)或使用!!1将整数转换为布尔值

答案 1 :(得分:0)

if (this.state.question.options.filter((el) => {return !!el.assert}).length <= 0) {
    hasError = true
    errorKey = 'add-question-modal-missing-assert-options'
}
else {
    alert("test");
}

答案 2 :(得分:0)

this.state.question.options的值为-

[
    {
        id:3250,
        label:'good answer',
        assert:1,
        position:1
    },
    {
        id:3249,
        label:'bad answer',
        assert:0,
        position:2
    }
]

然后

if (this.state.question.options.filter(o => o.assert == true)).length <= 0) {
    hasError = true
    errorKey = 'add-question-modal-missing-assert-options'
} else {
    alert("test");
}

===严格类型替换为==

答案 3 :(得分:0)

在JavaScript中,1不严格等于true。但是,使用严格的相等运算符===是个好习惯。

您应该将o.assert与实际可能的值o.assert === 1进行比较。

在可读性方面,我还将考虑将长度与1而不是0进行比较:

this.state.question.options.filter(option => option.assert === 1).length < 1

答案 4 :(得分:0)

您是否需要这种代码

if (this.state.question.options.length <= 0) {
    assert = true;
    hasError = true;
    errorKey = 'add-question-modal-missing-assert-options'
}
else {
    alert("test");
}