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.keysfor getting all own property names,Array#reducefor iterating an array and collecting items for return,Array#forEachjust 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"