6

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.

1
  • what have you tried? I'd say just iterate over the array and make the array of objects by hand. Commented Jan 18, 2013 at 11:26

4 Answers 4

14
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.

Sign up to request clarification or add additional context in comments.

2 Comments

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

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)

Comments

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);
}

Comments

0

How to traverse through the following structure from 2D array

weekearn,monthearn is variable containing array of objects. I need loop because I don't know the number of products

          const stackdata = {          
    
                       datasets:[{
                         data: weekearn,
                         label: 'Product 1',
                         backgroundColor: 'rgb(255, 87, 51)',
                         borderColor: 'rgb(255, 99, 132)',            
                     },
                     {
                         data: monthearn,
                         label: 'Product 2',
                         backgroundColor: 'rgb(155, 87, 51)',
                         borderColor: 'rgb(255, 99, 32)',
                        
                     }
                 ]
             };

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.