0
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++;
}
Sunil Dubey
  • 123
  • 1
  • 10

2 Answers2

1

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);
})
Ramesh Reddy
  • 10,159
  • 3
  • 17
  • 32
  • hmm but Is there any way to fix this code ? var i =0; for(var key in userLists) { console.log(userLists.user+i) i++; } – Sunil Dubey May 15 '20 at 06:31
1

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.

gorak
  • 5,233
  • 1
  • 7
  • 19