2015-06-30 2 views
2

У меня есть JSON с корневым узлом:Как перебрать JSON с корневым узлом в JavaScript

{ 
 
"comments": 
 
    [ 
 
    {"id":1,"author_name":null,"comment_text":null,"url":"http://localhost:3000/comments/1.json"} 
 
    ] 
 
}

, и я хочу, чтобы пройти через каждый объект. Это то, что я стараюсь:

var commentNodes = this.props.comments.map(function(comment,index){ 
 
      // do something over each object 
 
      ); 
 
     });

Но это не работает:

Uncaught TypeError: this.props.comments.map is not a function

+1

Как вы определяете переменную 'this.props'? –

+0

@ TaoP.R., Забыл упомянуть, это на самом деле Реагирует. – yerassyl

+0

Карта предназначена для массивов, а не для объектов. –

ответ

1

Вы можете просто итерацию над ним с цикл, как это:

data = { 
    "comments": [ 
     { 
      "id": 1, 
      "author_name": null, 
      "comment_text": null, 
      "url": "http://localhost:3000/comments/1.json" 
     }, { 
      "id": 2, 
      "author_name": null, 
      "comment_text": null, 
      "url": "http://localhost:3000/comments/2.json" 
     } 
    ] 
} 

for (var i = 0; i < data.comments.length; i++) { 
    var comment = data.comments[i]; 

    // do something with the comment 
    // console.log(comment.id); 
    // console.log(comment.url); 
} 

Или, если вы хотите, чтобы получить все авторы комментариев к примеру, вы можете сделать это:

var authors = data.comments.map(function(comment) { 
    return comment.author_name; 
}); 
Смежные вопросы