Home > Back-end >  Convert 2D array to array of objects
Convert 2D array to array of objects

Time:06-06

I have been trying to convert this data:

var myArray = [
[1,2,3,4],
["1","2","3","4"],
["a", "b", "c", "d"]
]

to this:

var result = [
  {
    "num": 1,
    "str": "1",
    "let": "a"
  },
  {
    "num": 2,
    "str": "2",
    "let": "b"
  },
  {
    "num": 3,
    "str": "3",
    "let": "c"
  },
  {
    "num": 4,
    "str": "4",
    "let": "d"
  }
]

Any assistance will be extremely helpful. I have tried various iterations but none of them yield what I am hoping for.

I am trying to use this:

objectified_data = array_data.map(function(x) {
    return {    
        "num": x[0],
        "str": x[1],
        "let": x[2]
    }
})

But I cannot figure out how to make the homogenous set of array, heterogenous for this to work. Ultimately, I am trying to filter out certain keys, so the original data as it was is not working for that task

CodePudding user response:

You can achieve this with a simple for

var myArray = [
  [1, 2, 3, 4],
  ["1", "2", "3", "4"],
  ["a", "b", "c", "d"]
]
const json = [];

for (let i = 0; i < myArray[0].length; i  ) {
  json.push({
    num: myArray[0][i],
    let: myArray[1][i],
    str: myArray[2][i],
  });
}

console.log(json);

CodePudding user response:

Try this

var myArray = [[1,2,3,4],["1","2","3","4"],["a", "b", "c", "d"]];

let result = myArray[0].map((v, i) => ({
    "num": myArray[0][i],
    "let": myArray[1][i],
    "str": myArray[2][i]
}))

console.log(result)

CodePudding user response:

Just a basic solution. You would want i to be dynamic I believe ? In that case you can just check the first nested array's size and use that as i.

    let x = 0;
    let y = 1;
    let z = 2;
    let json = [];
    for(let i=0; i<4;i  ){
        let item = {};
        item = {
            ["num"]: myArray[x][i],
            ["let"]: myArray[y][i],
            ["str"]: myArray[z][i]
        }
        result.push(item);
    }
  • Related