通过JSON数组循环提供“未定义”结果

这个问题在这里已经有了答案:

  • 为什么在数组迭代中使用“for ... in”是一个坏主意? 25个答案
  • JavaScript for ... in vs 23个答案

  • 你忘记访问AlmostThere

      jsonData.TheArray[i].AlmostThere.whatWeAreLookingFor
    

    for (var i = 0; i < jsonData.TheArray.length; i++) {
        console.log(jsonData.TheArray[i].AlmostThere.whatWeAreLookingFor);
    }
    

    如果以你的方式循环数组TheArray ,则contents var将成为这两个对象:

    {  
         "AlmostThere": {  
            "whatWeAreLookingFor":"Hello"
         }
    }
    

    {
        "AlmostThere": {
            "whatWeAreLookingFor":"Goodbye"
        }
    }
    

    现在您想要通过访问值

    contents.whatWeAreLookingFor

    但是这个属性对于这些对象是未定义的。 所以你的控制台日志undefined 。 您必须通过以下方式访问该值:

    contents.AlmostThere.whatWeAreLookingFor
    

    所以你得到对象AlmostThere并选择属性whatWeAreLookingFor

    如果你使用jQuery,你应该使用:

    $.each(jsonData.TheArray, function() {
         console.log(contents.AlmostThere.whatWeAreLookingFor + '!');
    });
    

    API:http://api.jquery.com/jquery.each/


    for... in遍历对象的键。 用于阵列,这意味着(大约)的索引012 ,等等。

    你可以使用Array.prototype.forEach来代替:

    jsonData.theArray.forEach(function(contents) {
      console.log(contents.AlmostThere.whatWerAreLookingFor);
    })
    
    链接地址: http://www.djcxy.com/p/70017.html

    上一篇: Looping through a JSON Array gives "undefined" results

    下一篇: Javascript why FOR IN is a bad practice?