JavaScript 空数组 indexOf

JavaScript Empty Array 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"。我只是想知道,它是如何通过在 allowedNull 上调用 indexOf 来工作的。谁能解释一下这是如何工作的。

Fiddle : Check

首先是 indexOf(i) 方法 returns 可以在数组中找到给定元素的第一个索引,如果不存在则为 -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'] 不会打印任何内容。

希望对您有所帮助! :)