Javascript - convert array of arrays into array of objects with prefilled values

I have following array:

[
    [val1, val2]
    [val1, val2]
    [val1, val2]
    [valN, valN]
]

N represents the fact that these arrays are not limited, i.e I never know how much of them do I store. What I try to accomplish is converting that array to array of objects with keys lat and lng and I expect so have final result as following so I can use it for further needs:

[
    {
        lat: val1,
        lng: val2
    },
    {
        lat: val1,
        lng: val2
    },
    {
        lat: valN,
        lng: valN
    }
]

I found a function to convert these inner arrays to objects and it looks like this:

objectify(array) {
    return array.reduce(function(result, currentArray) {
        result[currentArray[0]] = currentArray[1];
        return result;
    }, {});
}

It works but output looks like this:

[
    {val1: val1, val2: val2}
    {val1: val1, val2: val2}
    {valN: valN, valN: valN}
]

and that's not what I'm looking for, because I really need these lat and lng to be keys of an object. How can I solve such issue?

Answers:

Answer

You can simply use Array.prototype.map to project an array into another one by applying a projection function:

var arrs = [
    [1, 2],
    [3, 4],
    [5, 6],
    [7, 8]
];

var objs = arrs.map(function(x) { 
  return { 
    lat: x[0], 
    lng: x[1] 
  }; 
});
console.log(objs);

Answer

Using ES6 you can write this in a very concise way:

var arrs = [
    [1, 2],
    [3, 4],
    [5, 6],
    [7, 8]
];
const locations = arrs.map(([lat, lng]) => ({lat, lng}));
console.log(locations);

Answer

You can use Array#map to achieve this. Array#map passes each array element through a projection function and returns the values in a new array.

var data= [
    ['val1', 'val2'],
    ['val1', 'val2'],
    ['val1', 'val2'],
    ['valN', 'valN'],
];

var result = data.map(function(row) {
  return {
    lat: row[0],
    lng: row[1]
  };
});

console.log(result);

Answer

var array = [
    ['val1', 'val2'],
    ['val1', 'val2'],
    ['val1', 'val2'],
    ['valN', 'valN']
];

var arrayObject = array.map(function(item){ 
  return { lat: item[0], lng: item[1]};
});

console.log(arrayObject);

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.