JavaScript空数组indexOf

时间:2015-09-26 06:26:05

标签: javascript arrays object indexof

我上个天经历了一些JS代码,但我无法理解。这是代码

var data = {
     name : 'Mr John',
     age : '29',
     location : 'New York',
     profession : 'Accoutant'
};

var allowedNull = [];

for (var i in data) {
     if (!data[i])
     {

          if (allowedNull.indexOf(i) < 0)
          {
               console.log('Empty');
          }
     }
}

如果data有一个空属性,脚本实际上会在控制台中打印“Empty”。我只是想通过indexOf上的allowedNull来了解它是如何工作的。有人可以解释一下这是如何运作的。

小提琴:Check

1 个答案:

答案 0 :(得分:2)

首先,indexOf(i)方法返回可在数组中找到给定元素的第一个索引,如果不存在,则返回-1。 在这种情况下,流程是:

//loop over data object

for (var i in data) {

//if the current property is empty/undefined
 if (!data[i])
 {
      //and if this property is not present inside the allowedNull array
      if (allowedNull.indexOf(i) < 0)
      {
           // print empty
           console.log('Empty');
      }
 }
}

如果您尝试在数据对象中添加属性test : '',您将在控制台Empty中打印,但是如果您在allowedNull数组test中添加var allowedNull = ['test']什么都不打印。

希望这可以提供帮助! :)