if else将数组与字符串

时间:2015-12-04 11:35:11

标签: javascript if-statement

我有以下if-else

if (entity.length > depot.length) {
    for (var i = 0 ; i < entity.length; i++) {
        promises.push(this.getDataFromREST(security, i));
        console.log(entity, depot)
    }
} else {
    for (var i = 0 ; i < depot.length; i++) {
        promises.push(this.getDataFromREST(security, i));
        console.log(entity, depot)
    }
}

entitydepot是数组,但如果它们没有保存数据= "NULL"

基本上,出于本说明的目的,我希望将"NULL"的长度读为0,或if entity是长度为1+且{{1}的数组是一个字符串 - 满足条件depot

2 个答案:

答案 0 :(得分:4)

如果entitydepot都可以是“NULL”字符串或有效数组,您只需检查"NULL",计算其长度一次并使用一个循环:

var loopLength = Math.max(entity === 'NULL' ? 0 : entity.length, 
                           depot === 'NULL' ? 0 : depot.length);

for (var i = 0 ; i < loopLength; i++) {
    promises.push(this.getDataFromREST(security, i));
    console.log(entity, depot)
}

仅当至少entitydepot不是"NULL"字符串且有效的非空数组时,此循环才会运行。

答案 1 :(得分:2)

您可以做的是定义一个函数长度,如下所示

function length(s){
   if(s === "NULL") return 0;
   else return s.length;
}

然后按照您的方式编写代码,但使用此函数进行长度

    var entityLength = length(entity);
    var depotLength = length(depot);

    if (entityLength > depotLength) 
       var loopLength = entityLength;
    else
       var loopLength = entityLength;


    for (var i = 0 ; i < loopLength; i++) {
        promises.push(this.getDataFromREST(security, i));
        console.log(entity, depot)
    }