我有嵌套的JSON,如下所示:

var data =  [
   {
      "id":"4",
      "name":"2nd anniversary",
      "date":"2015-12-17",
      "location":"Mumbai",
      "story_body":"Gzjjs jdk djks jdks jdkd jx djdb djd JD djbd djdj d",
      "short_link":"izWfs",
      "created_at":"2015-12-11 03:49:52",
      "path":[
         "\/SupportData\/ImpalzB2B\/uploads\/711453354154623.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/90294930451449759544217.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/471453355023537.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/90294930451449759544223.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/90294930451449759544179.jpg"
      ],
      "update_type":"3"
   },
   {
     "id":"7",
     "name":"#1styearAnniversary",
     "date":"2016-01-20",
     "location":"Mumbai",
     "story_body":"Bsjsj jdkdk djdkdk dkdkf kdkf dkfj fjfj fjfkjdd djkd",
     "short_link":"FHXh0",
     "created_at":"2016-01-20 23:10:54",
     "path":"\/SupportData\/ImpalzB2B\/uploads\/11453356652175.jpg",
     "update_type":"3"
   },
   {
      "id":"19",
      "name":"Product qetyfvhchv",
      "description":"Cheers Vgdhvjd hugging",
      "short_link":"jPE7G",
      "created_at":"2016-01-18 05:03:46",
      "path":"\/SupportData\/ImpalzB2B\/uploads\/90294930451453118625255.jpg",
      "update_type":"4"
   },
   {
      "id":"20",
      "name":"F frfgcgj ggvvhv",
      "description":" Vdhsj fgjjchk",
      "short_link":"hMn8K",
      "created_at":"2016-01-18 05:04:16",
      "path":"\/SupportData\/ImpalzB2B\/uploads\/90294930451453118654785.jpg",
      "update_type":"4"
   },
   {
      "id":"25",
      "name":"Gshsh djdj djdkd dkkd",
      "description":"Bsjjd djjd djdirj dudir",
      "short_link":"dhT6l",
      "created_at":"2016-01-22 05:39:31",
      "path":[
         "\/SupportData\/ImpalzB2B\/uploads\/11453466369930.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/11453466369891.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/11453466369942.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/11453466369934.jpg",
         "\/SupportData\/ImpalzB2B\/uploads\/11453466369939.jpg"
      ],
      "update_type":"4"
   },
   {
      "id":"26",
      "name":"For Healthy Breakfast, head over to our new restaurant in Andheri",
      "description":"Delightful upma",
      "short_link":"CG0i4",
      "created_at":"2016-02-04 06:58:17",
      "path":"\/SupportData\/ImpalzB2B\/uploads\/11454594295456.jpg",
      "update_type":"4"
   },
   {
      "id":"1",
      "body":"#Awesome2Eat",
      "votes":"28",
      "update_type":"7",
      "short_link":"GcKAe",
      "created_at":"2016-02-04 01:28:53",
      "name":"nehil"
   },
   {
      "id":"10",
      "body":"#Bouncy",
      "votes":"1",
      "update_type":"7",
      "short_link":"JXUxz",
      "created_at":"2016-02-04 00:12:52",
      "name":"nehil"
   },
   {
      "id":"11",
      "body":"#Superman",
      "votes":"0",
      "update_type":"7",
      "short_link":"4Keyd",
      "created_at":"2016-02-04 01:17:36",
      "name":"nehil"
   }
]


如何从Object获取路径数组的长度?
我尝试过给出错误的长度。

for (var key in data) {
  if(data[key].update_type == '3'){
    console.log(data[key].path.length);     // 5 and 49 . It Should be 5 and 1
  }
};


这也是获取Object的每个元素的正确方法吗? :

for (var key in data) {
   console.log(data[key].id);
       $.each(data[key].path, function (i, obj) {
         console.log(obj);
       });
   };


小提琴链接:http://jsfiddle.net/Nehil/2ym3ffo0/

最佳答案

因为data[key].path的值的类型不是数组(第二个实例),所以它是String。而且String还具有length属性,该属性给出了string的长度。

做了

for (var key in data) {
  if(data[key].update_type == '3')
  {
    if (typeof data[key].path == "string" )
    {
      console.log( 1 );
    }
    else
    {
       console.log(data[key].path.length);     // 5 and 49 . It Should be 5 and 1
       //to print all the elements on the console one by one
       if ( data[key].path && data[key].path.length > 0 )
       {
         data[key].path.forEach( function(value){
           console.log( value );
         } );
       }
    }
  }
}

关于javascript - JSON对象获取长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35284330/

10-12 01:23
查看更多