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

前端 未结 6 2058
长情又很酷
长情又很酷 2020-12-03 01:40

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;

相关标签:
6条回答
  • 2020-12-03 01:54
    var obj =[
                {'2018-05-07':1},
                {'2018-05-08':3},
                {'2018-05-09':2}
            ];
    
            for(var i of obj) {
                var key = Object.keys(i).toString();
                console.log(i,'=',i[key]);
            }
    

    Result

    :

    0 讨论(0)
  • 2020-12-03 01:56

    obj = {
      private_key: "private-key",
      public_key: "public-key"
    }
    
    str = JSON.stringify(obj).replace(/[{}]/g, '').replace(/"/g, '').replace(/:/g, '=');
    console.log("Using JSON.stringify:\n", str);
    
    str = Object.keys(obj).map((key) => `${key}=${obj[key]}`).join(',')
    console.log("Using ES6 keys/map:\n", str);
    
    str = jQuery.param(obj).replace(/&/g,',');
    console.log("Using jQuery.param:\n", str);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    0 讨论(0)
  • var array = [];
    for (k in o)
    {
        if (o.hasOwnProperty(k))
        {
            array.push(k+"="+o[k]);
        }
    }
    

    You can then join the array for your final string.

    0 讨论(0)
  • 2020-12-03 02:10
    var object = {
        private_key: "private-key",
        public_key: "public-key"
    };
    
    var array = [];
    for (var prop in object)
        array.push(prop + "=" + object[prop]);
    return array.join(','); // "private_key=private-key,public_key=public-key"
    

    Notice the order is not guaranteed.

    0 讨论(0)
  • 2020-12-03 02:12

    In ES6 you can use Object.entries({object1:1,object2:2});. The result is: [["object1",1],["object2",2]]

    0 讨论(0)
  • 2020-12-03 02:14

    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.

    0 讨论(0)
提交回复
热议问题