首页 > 解决方案 > 如何在javascript中执行if语句来检查JSON数组是否为空?

问题描述

我正在尝试堆栈溢出的各种答案来编写一个 if 语句,检查 JSON 数组是否已填充或为空。但是,console.log 总是返回 undefined。我使用 node.js 和 webstorm 作为 IDE。我可以得到一些帮助来解决这个问题吗?

function selectData(){
    var sql = "SELECT * FROM cust where LastName = '" +registerArray[0]+"'";
    con.query(sql, function (err, result) {
        console.log(JSON.stringify(result)); //correctly displaying stuffs from db
        if (result) { //statement not working correctly.
            var pw = "SELECT ID FROM cust where LastName = '" +registerArray[0]+"'";
            con.query(pw, function (err, result) {
                var idcheck  = JSON.stringify(result);
                console.log(result); //always shows undefined
                if (idcheck !== registerArray[0]){
                    return ("{re enter correct password}");
                } else {
                    return ("{login successfully}");
                }
            });

        } else {
            return("{sign up first}");
        }
    });
}
con.end();

}

标签: javascriptsqlarraysjsonif-statement

解决方案


问题是您正在使用带有 con.query 的严格相等运算符,([])如果它没有找到任何东西,它会返回一个空数组。由于您使用严格比较([]) !== 0解析为 TRUE 这会导致您的问题。

解决方案

您可以将您的声明更改为if (result)或者更清晰更详细的版本,if (result.length > 0 )这将完成您正在尝试做的事情。

您可以从这篇文章JavaScript 中的真值和假值中了解更多关于 JS 如何计算表达式的信息


推荐阅读