JavaScript 空数组indexOf

标签 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”。我只是想知道它是如何通过在 allowedNull 上调用 indexOf 来工作的。有人可以解释一下这是如何工作的吗?

fiddle :Check

最佳答案

首先,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 但如果您添加 test allowedNull 数组内 var allowedNull = ['test'] 不会打印任何内容。

希望这能有所帮助! :)

关于JavaScript 空数组indexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794324/

相关文章:

arrays - 结合LinkedList和String Reversal为目标是理解LinkedList

C 语言的凯撒密码

c++ - 跟踪 QTreeView/QStandardItem 上的对象的正确方法是什么

Javascript:确定未知数组长度并动态映射

javascript - 带列表的嵌套 Promise

javascript - 删除 console.log 会破坏 Web Audio API 的代码

Javascript:外部函数中的变量不会被内部函数更改

javascript - 数组键和填充

java - 从 JXTreeTable 中获取选定的值

javascript - 当我点击评级控件中的星星时如何传递值?