2-dimensional array to object (JavaScript)

11,213

Solution 1

json = myArray.map(function(x) {
    return {    
        "s_id": x[0],
        "t_id": x[1],
        "type": x[2]
    }
})

Be aware that map is not supported in IEs < 9.

Solution 2

Try with:

var length = myArray.length,
    json   = [];

for ( var i = 0; i < length; i++ ) {
  var subArray = myArray[i],
      item = {
        s_id: subArray[0],
        t_id: subArray[1],
        type: subArray[2]
      };
   json.push(item);
}

Solution 3

You could destructure the parameter in map and use Shorthand property names:

const myArray=[[2260146,2334221,"copy"],[1226218,2334231,"copy"],[2230932,-1,"copy"],[2230933,-1,"copy"],[2230934,-1,"copy"]]

const output = myArray.map(([s_id, t_id, type]) => ({ s_id, t_id, type }))

console.log(output)
Share:
11,213
maze
Author by

maze

Updated on June 11, 2022

Comments

  • maze
    maze almost 2 years

    I have an array, that holds a large number of two-dimensional arrays:

    var myArray = [
        [2260146,2334221,"copy"],
        [1226218,2334231,"copy"],
        [2230932,-1,"copy"],
        [2230933,-1,"copy"],
        [2230934,-1,"copy"]
    ]
    

    I need to convert this array into an object of the following form to send it as JSON:

    var json = [
      {
        "s_id": 2260146,
        "t_id": 2334221,
        "type": "copy"
      },
      {
        "s_id": 1226218,
        "t_id": 2334231,
        "type": "copy"
      },
      {
        "s_id": 12,
        "t_id": -1,
        "type": "copy"
      }
    ]
    

    ("s_id" should be myArray[0][0], "t_id myArray[0][1], and "type" myArray[0][2] and so on.)

    How can I get the array in the desired form? Thanks in advance.

  • maze
    maze over 11 years
    So in order to support IE < 9 I would have to do something like hsz suggested below?
  • georg
    georg over 11 years
    @maze: yes, if you use jquery anyways, $.map is a better choice.