Skip to content Skip to sidebar Skip to footer

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

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"