7

I am trying to map a json object to an array with values associated to the keys. I need to keep keys and values associated because I will do a sort on the created array after. My object look like this :

{"178":"05HY24","179":"1HY12","292":"1HY24","180":"3HY12"}

I have tryed to do the array with this function :

value=$.map(value, function(value, key) { return key,value; });

But keys are not associated to my values. Keys are 0,1,2,3 and not 178,179,292,180. I try a lot of things but I don't know how to do that.

Etienne
  • 408
  • 2
  • 9
  • 28

2 Answers2

8
var myHashMap = JSON.parse('{"178":"05HY24","179":"1HY12","292":"1HY24","180":"3HY12"}');
console.log(myHashMap[178]);
// => "05HY24"

// now map to array..
var myArray = $.map(myHashMap, function(value, index) {
   return [value];
});

console.log(myArray);
shanehoban
  • 870
  • 1
  • 9
  • 30
  • it still give me an object. I want an array to do array operation after – Etienne Jul 08 '15 at 09:27
  • 1
    at the end if I do a console.log(myArray[292]) the result is undefined and not 1HY24. The keys are lost – Etienne Jul 08 '15 at 09:38
  • @Etienne that's because it is an array, not an object - like you wanted. Edit: I'm not sure you quite know what you actually want/need - but take a look at this answer if you want to sort objects: http://stackoverflow.com/a/16794116/1173155 – shanehoban Jul 08 '15 at 09:39
  • ok so I can't have keys associated to values in a javascript array. I can only have key begining to 0. – Etienne Jul 08 '15 at 09:43
  • if you use myHashMap after the JSON.parse() you should have an object with keys. So you can do myHashMap.292 and it'll return 1HY24 – Valentino Feb 09 '23 at 12:33
1

You can do it without using jQuery:

var values = {
  "178": "05HY24",
  "179": "1HY12",
  "292": "1HY24",
  "180": "3HY12"
};
var array = [];
for (var k in values)
  array.push({
    'k': k,
    'v': values[k]
  });
array.sort(function(a, b) {
  return a.k - b.k;
});
console.log(array);