IF ELSE 条件总是转到 ELSE

IF ELSE condition is always going to the ELSE

这是我的 POST 请求:

router.post('/', (req, res) => {
    let body = { ...req.body };
    let odd = new Array();
    let even = new Array();
    let is_success = true;

    body.array.forEach((element) => {
        if (Number.isInteger(element)) {
            if (element % 2 == 0) {
                even.push(element);
            } else {
                odd.push(element);
            }
        } else {
            is_success = false;
            return;
        }
    });
    if (is_success) {
        res.status(200).json({
            is_success: `${is_success}`,
            user_id: 'john_doe_17091999',
            odd: `${odd}`,
            even: `${even}`,
        });
    } else
        res.status(200).json({
            is_success: `${is_success}`,
            user_id: 'john_doe_17091999',
        });
});

条件 is_success 没有变成真,它总是进入 else 条件。如果所有输入元素都是整数,我想要做的是获取数组和 return 奇偶数组:

{
"array": ["1", "2", "3"] 
}

回复:

{
"successful": true,
"odd": [1, 3],
"even": [2],
}

它总是响应什么:

{
    "is_success": "false",
    "user_id": "john_doe_17091999"
}

您的数组包含字符串。您需要先将它们转换为数字,然后才能对它们进行 运行 Number.isInteger(),否则它将始终 return 'false'。您可以通过在元素前放置一个“+”来做到这一点。见下文。

Number.isInteger(+element)

在使用 Number.isInteger 之前,您必须将每个 element 转换为 Number否则你会得到错误。

示例:Number.isInteger("2") 将 return false Number.isInteger(Number("2")) 将 return 为真