5

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
  • 389
  • 2
  • 8
  • 26

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
  • 880
  • 1
  • 9
  • 28
  • 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
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);