Search code examples
javascriptreflectionintrospection

Convert object's properties and values to array of key value pairs


I'm fairly new to JavaScript and am not sure this is possible to do but basically I would like to take an object and convert it into an array of strings in the format; array[0] = 'prop1=value1'

The reasoning behind this is that I'm having a user enter a list of k=v pairs into a form, later it's written as an object within a json blob. Going from the key value csl to the json object was simple, now I need to go back the other way (I've received the JSON via an ajax call and want to populate a blank form). Is this possible in JavaScript? If not please offer a reasonable work around.

Sample code;

Object in debugger;

 Object
        private_key: "private-key"
        public_key: "public-key"

I need to convert that to;

 "private_key=private-key,public_key=public-key"

Basically I need something like this (pseudo code)

var outputString = '';
foreach (prop in obj)
{
    outputString = outputString + prop.tostring() + '=' + prop.value + ',';
}

Solution

  • You're probably looking for something along the lines of

    var obj = {value1: 'prop1', value2: 'prop2', value3: 'prop3'};
    var arr = [];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            arr.push(key + '=' + obj[key]);
        }
    };
    var result = arr.join(',');
    alert(result);
    

    Notice that it will work fine if your values are strings; if they're complex objects then you'll need to add more code.

    Or you can just use jQuery.param, which does what you want, even for complex types (although it uses the & character as the separator, instead of the comma.