tags:

views:

40

answers:

1

I'm trying to serialize to URL string an associative array whose elements are defined at runtime in the form of arr[key]=value, where key and value are determined at runtime, but arr is predefined as a global before runtime. I can't get the param() function to work with this kind of array. Is there another function to use to serialize such arrays?

var arr=[];
arr["apple"]="poisoned";
arr["banana"]="digested";

var str=jQuery.param(arr);
$("#results").text(str);
​
A: 

Use object notation instead:

var arr={};
arr["apple"]="poisoned"; // or arr.apple
arr["banana"]="digested"; // or arr.banana

While objects and arrays operate in a similar same way in JS its still better to think of arrays as being numerically indexed arrays, as opposed to hashes.

prodigitalson
hmm if it's an object rather than array - would there be any trouble with using `delete` and `pop()` and such to manipulate it?
ina
`delete` will be fine. `pop` will not work unless you create your own method and augument the object... But if you need named keys why are you using `pop`/`push`? I think this has become a more specific question about what you are trying to do... would you care to elaborate on what you are trying to implement?
prodigitalson