Best Way To Convert Object With Arrays To Array With Objects And Viceversa
what is the best way to convert an object of arrays to an array of objects and vice-versa { category : ['a','b','c'], title : ['e','f','g'], code : ['z','x','v'] } To [ {
Solution 1:
You could use two function for generating an array or an object. They works with
Object.keys
for getting all own property names,Array#reduce
for iterating an array and collecting items for return,Array#forEach
just fo itarating an array.
function getArray(object) {
return Object.keys(object).reduce(function (r, k) {
object[k].forEach(function (a, i) {
r[i] = r[i] || {};
r[i][k] = a;
});
return r;
}, []);
}
function getObject(array) {
return array.reduce(function (r, o, i) {
Object.keys(o).forEach(function (k) {
r[k] = r[k] || [];
r[k][i] = o[k];
});
return r;
}, {});
}
var data = { category: ['a', 'b', 'c'], title: ['e', 'f', 'g'], code: ['z', 'x', 'v'] };
console.log(getArray(data));
console.log(getObject(getArray(data)));
.as-console-wrapper { max-height: 100% !important; top: 0; }
Solution 2:
Here is solution using reduce
method and arrow
function.
var obj={
category : ['a','b','c'],
title : ['e','f','g'],
code : ['z','x','v']
}
var result=obj[Object.keys(obj)[0]].reduce((a,b,i)=>{
var newObj={};
Object.keys(obj).forEach(function(item){
newObj[item]=obj[item][i];
});
return a.concat(newObj);
},[]);
console.log(result);
Solution 3:
You can use map()
and forEach()
var obj = {
category : ['a','b','c'],
title : ['e','f','g'],
code : ['z','x','v']
}
var result = Object.keys(obj).map(function(e, i) {
var o = {}
Object.keys(obj).forEach((a, j) => o[a] = obj[a][i])
return o
})
console.log(result)
Post a Comment for "Best Way To Convert Object With Arrays To Array With Objects And Viceversa"