JavaScript - 用于循环JSON返回' Undefined'

时间:2017-01-15 20:19:38

标签: javascript json

我有一个简单的for循环,返回undefined

以下是代码:

  var optionName = '';

     for(var i=0; i<extras.length; i++){
          optionName = extras[i].optionName;
     }
     console.log(optionName);

     //      console.log(extras[0].optionName); >> Drinks
    //       console.log(extras[1].optionName); >> Undefined

这是extras数组:

enter image description here

3 个答案:

答案 0 :(得分:1)

第一个数组元素具有optionName属性,但不是第二个。因此,当您访问extras[1].optionName时,不存在且代码返回未定义。

答案 1 :(得分:0)

数组中的第二项是数组(Array [3]),而不是对象。该项目未定义optionName

答案 2 :(得分:0)

所以,你有一个包含2个元素的数组。

'\012'

正如您所看到的,extras数组中的第一个元素是一个对象,该对象的extras = [ {key: value}, [object0, object1, object2], ] 带有key: optionName。所以当你打电话时

value: Drinks

它将返回Drinks的值。

然后你的循环移动到数组中的下一个元素并查找console.log(extras[0].optionName); ,但由于你的第二个数组元素是一个数组,它无法找到键并返回undefined。由于我不知道key: optionName的对象中包含的内容,因此我无法提供有关如何重写循环的建议,但上面是您收到extra[1]的原因的解释。

您只需添加undefined条件即可过滤未定义的值:

if

由于undefined是JS中的if (extras[0].optionName) { console.log(extras[0].optionName); } 值,因此只要您实际上没有值,它就不会进入falsy语句。

当然,如果您希望在循环中使用此功能,请将if替换为[0]