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)
Author by
maze
Updated on June 11, 2022Comments
-
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_idmyArray[0][1]
, and "type"myArray[0][2]
and so on.)How can I get the array in the desired form? Thanks in advance.
-
maze over 11 yearsSo in order to support IE < 9 I would have to do something like hsz suggested below?
-
georg over 11 years@maze: yes, if you use jquery anyways,
$.map
is a better choice.