Converting a JS object to an array using jQuery

后端 未结 18 3368
鱼传尺愫
鱼传尺愫 2020-11-22 01:37

My application creates a JavaScript object, like the following:

myObj= {1:[Array-Data], 2:[Array-Data]}

But I need this object as an array.

18条回答
  •  Happy的楠姐
    2020-11-22 02:07

    After some tests, here is a general object to array function convertor:

    You have the object:

    var obj = {
        some_key_1: "some_value_1"
        some_key_2: "some_value_2"
    };
    

    The function:

    function ObjectToArray(o)
    {
        var k = Object.getOwnPropertyNames(o);
        var v = Object.values(o);
    
        var c = function(l)
        {
            this.k = [];
            this.v = [];
            this.length = l;
        };
    
        var r = new c(k.length);
    
        for (var i = 0; i < k.length; i++)
        {
            r.k[i] = k[i];
            r.v[i] = v[i];
        }
    
        return r;
    }
    

    Function Use:

    var arr = ObjectToArray(obj);
    

    You Get:

    arr {
        key: [
            "some_key_1",
            "some_key_2"
        ],
        value: [
            "some_value_1",
            "some_value_2"
        ],
        length: 2
    }
    

    So then you can reach all keys & values like:

    for (var i = 0; i < arr.length; i++)
    {
        console.log(arr.key[i] + " = " + arr.value[i]);
    }
    

    Result in console:

    some_key_1 = some_value_1
    some_key_2 = some_value_2
    

    Edit:

    Or in prototype form:

    Object.prototype.objectToArray = function()
    {
        if (
            typeof this != 'object' ||
            typeof this.length != "undefined"
        ) {
            return false;
        }
    
        var k = Object.getOwnPropertyNames(this);
        var v = Object.values(this);
    
        var c = function(l)
        {
            this.k = [];
            this.v = [];
            this.length = l;
        };
    
        var r = new c(k.length);
    
        for (var i = 0; i < k.length; i++)
        {
            r.k[i] = k[i];
            r.v[i] = v[i];
        }
    
        return r;
    };
    

    And then use like:

    console.log(obj.objectToArray);
    

提交回复
热议问题