'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?
Solution 1:[1]
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);
Solution 2:[2]
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);
Solution 3:[3]
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);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | abhishekkannojia |
| Solution 3 | Jay |
