JavaScript检查多个变量为空

时间:2016-12-16 17:58:09

标签: javascript

我正在尝试以下代码:

var var1 = "";
var var2 = "test";
var var3 = "";

vars = new Array('var1','var2','var3');

var count = 0;

for (var i = 0; i < vars.length; ++i) {
    var name = vars[i];
    if (field_is_empty(name)) {
        count++;
    }
}

console.log(count);

function field_is_empty(sValue) {
    if (sValue == "" || sValue == null || sValue == "undefined")
    {
        return true;
    }
    return false;
}

此处的结果应为count = 2,因为其中两个变量为空,但始终为0。我想在使用if (field_is_empty(name))时必须使用它,因为它可能无法将名称转换为实际var的名称。

问题2#仍然相关

我已将 Karthik Ganesan 提及的代码更新,并且效果非常好。

现在代码是:

var var1 = "";
var var2 = "test";
var var3 = "";

vars = new Array(var1,var2,var3);

var count = 0;

for (var i = 0; i < vars.length; ++i) {
    var name = vars[i];
    if (field_is_empty(name)) {
        count++;
    }
}

console.log(count);

function field_is_empty(sValue) {
    if (sValue == "" || sValue == null || sValue == "undefined")
    {
        return true;
    }
    return false;
}

问题是如果添加一个像这样的新if语句:

if (count == '3') {
    console.log('AllAreEmpty');
} else {
    for (var i = 0; i < vars.length; ++i) {
        var name = vars[i];
        if (field_is_empty(name)) {
            //Set the empty variables as "1900-01-01"
            variableService.setValue(name,"test");
        }
    }
}

它什么也没做,我已经使用variableService.setValue('var1',"test")进行了测试,但它确实有效。

PS:变量Service.setValue是一个由软件控制的函数我不知道它是什么我知道如果使用它就像上面提到的那样工作。

3 个答案:

答案 0 :(得分:1)

你肯定错误地初始化数组,你把字符串“var1”,“var2”,“var3”而不是对字符串(变量)的引用。 试试这个:

vars = new Array(var1,var2,var3);

答案 1 :(得分:0)

您的阵列错误

应该是

vars = new Array(var1,var2,var3);

这是jsfiddle

答案 2 :(得分:0)

在您第一次尝试时,您在创建数组时将变量名称用作字符串。您需要自己使用值:

vars = new Array(var1,var2,var3);

或者如果您坚持按名称使用它们,那么您在使用它们时需要按名称查找它们:

if (field_is_empty(window[name])) {
  

它什么都不做

那是不可能的。它可能会抛出一个错误,或输入if或输入else,但什么都不做是不可能的。但是,因为你打算首先按名称使用变量(可能不是没有理由),然后你打算传递一个名字,但它是一个值,它不能按预期工作,我假设你的初始数组初始化是正确的,if应该像这样修复:

var var1 = "";
var var2 = "test";
var var3 = "";

vars = new Array(var1,var2,var3);

var count = 0;

for (var i = 0; i < vars.length; ++i) {
    var v = window[vars[i]]; //You need the value here
    if (field_is_empty(v)) {
        count++;
    }
}

console.log(count);
if (count == '3') {
    console.log('AllAreEmpty');
} else {
    for (var i = 0; i < vars.length; ++i) {
        var v = window[vars[i]];
        if (field_is_empty(v)) {
            //Set the empty variables as "1900-01-01"
            variableService.setValue(vars[i],"test");
        }
    }
}

function field_is_empty(sValue) {
    if (sValue == "" || sValue == null || sValue == "undefined")
    {
        return true;
    }
    return false;
}