4

Hi Javascript/underscore gurus..

Lets say I receive a json object from the server which has an anonymous array nested as one of its properties... how would i loop through that array in an underscore _.each method?

This is my json object:

  "onlineUsers": [
    {
      "Id": "users/2",
      "Name": "Hamish",
      "LatestActivity": "2013-01-17T04:02:14.2113433Z",
      "LatestHeartbeat": "2013-01-17T04:02:14.2113433Z"
    },
    {
      "Id": "users/3",
      "Name": "Ken",
      "LatestActivity": "2013-01-17T03:45:20.066Z",
      "LatestHeartbeat": "2013-01-17T04:04:34.711Z"
    }
  ]

how would I modify this function to print out the names?

_.each(onlineUsers, function(user){log(user.name);});

This is printing out the actual collection of nested objects, obviously because they are elements in the nested array of onlineUsers... not sure how to get to that array to loop if it is anonymously passed in...

Thanks, Hamish.

2
  • removing the outer {} should make it valid JSON. Commented Jan 17, 2013 at 3:56
  • At a minimum, the inner objects should be {name: 'Joe'},{name: 'bloggs'}. That alone makes it an invalid object and throws a JS error. Commented Jan 17, 2013 at 4:10

2 Answers 2

14

The JSON you are receiving from the server is invalid JSON. The array needs a property name, eg:

onlineUsers = { names: [{name : "Joe"}, {name : "bloggs"}]}

Then you could do this:

_.each(onlineUsers.names, function(user){log(user.name);});
Sign up to request clarification or add additional context in comments.

Comments

2

An anonymous array inside an object is not valid json, so you wouldn't be able to parse it.

either give the array a name or remove the outer object.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.