Sunil Dubey
Sunil Dubey

Reputation: 133

Object manipulation in javascript in loop

var userLists = {
    user0 : {username: 'user9110252username', genrePref: 'user9110252genre'},
    user1 : {username: 'Jon', genrePref: 'rock'},
    user2 : {username: 'Lucy', genrePref: 'pop'},
    user3 : {username: 'Mike', genrePref: 'rock'},
}

I am getting input like userLists.user from somewhere it should be like userLists.user0 how can i convert this request

var i =0;
for(var key in userLists) {
   console.log(userLists.user+i)
   i++;
}

Upvotes: 0

Views: 93

Answers (2)

Rajneesh
Rajneesh

Reputation: 5308

If I understand your question correctly, do you want like this ?

var userLists = {
    user0 : {username: 'user9110252username', genrePref: 'user9110252genre'},
    user1 : {username: 'Jon', genrePref: 'rock'},
    user2 : {username: 'Lucy', genrePref: 'pop'},
    user3 : {username: 'Mike', genrePref: 'rock'},
}

var result = Object.fromEntries(Object.entries(userLists).map(([k,v], i)=>[k=i, v]));

console.log(result);

Or you can do similar manipulation inside map function according to your requirement.

Upvotes: 1

Ramesh Reddy
Ramesh Reddy

Reputation: 10662

If you want to use forEach or map you can do that on arrays but since you have an object you can use Object.entries for getting an array of arrays. There are also Object.keys and Object.values.

var userLists = {
    user0 : {username: 'user9110252username', genrePref: 'user9110252genre'},
    user1 : {username: 'Jon', genrePref: 'rock'},
    user2 : {username: 'Lucy', genrePref: 'pop'},
    user3 : {username: 'Mike', genrePref: 'rock'},
}

Object.entries(userLists).forEach(([key, value]) => {
  console.log(key, value);
})

Upvotes: 1

Related Questions