0

I'm having an array of object,in which I'm storing the billkey and billvalue as attributes. I want billkey to be the key and billvalue to be the value of that particular key.

var log=[
{
  billkey:"Name",
  billvalue:"ABC"
},
{ 
  billkey:"Department",
  billvalue:"Computer"
}
{
  billkey:"Name",
  billvalue:"XYZ"
},
{ 
  billkey:"Department",
  billvalue:"Electrical"
}];

And I want to convert it into this format:

var log=[
    {
      Name:"ABC",
      Department:"Computer"
    },
    { 
      Name:"XYZ",
      Department:"Electrical"
    }];
Ruchi yadav
  • 223
  • 3
  • 15

3 Answers3

0

create the result using forloop

 // store the values
  var logs=[];
  var log=[
{
  billkey:"Name",
  billvalue:"ABC"
},
{ 
  billkey:"Department",
  billvalue:"Computer"
},
{
  billkey:"Name",
  billvalue:"XYZ"
},
{ 
  billkey:"Department",
  billvalue:"Electrical"
},
];

loop the first array

for (i = 0; i < log.length; i++) {
    // create empty variable for storing the values
    var index = new Array();
    // insert the first index value to key
    index[log[i].billkey] = log[i].billvalue
    // insert the second index value to key 
    index[log[i+1].billkey] = log[i+1].billvalue
    // insert the result in to new array
    logs.push(index);
    // increment the i with 1 
    i=i+1;
}
console.log(logs);
Rahman
  • 282
  • 1
  • 10
0

How about this simple solution. Hope it helps!

var log=[
{
  billkey:"Name",
  billvalue:"ABC"
},
{ 
  billkey:"Department",
  billvalue:"Computer"
},
{
  billkey:"Name",
  billvalue:"XYZ"
},
{ 
  billkey:"Department",
  billvalue:"Electrical"
}];

var arr = [];
var finalObj = [];

for(var i in log){
 var someObject = log[i];
 for(var j in someObject){
   arr.push(someObject[j]);
 }
}

for(var k = 0; k < arr.length; k+=4){
      finalObj.push({
      Name: arr[k+1],
      Department: arr[k+3]
    });
}

console.log(finalObj);
HenryDev
  • 4,685
  • 5
  • 27
  • 64
0

You could use Array#reduce and use the remainder operator as witch for using either the last object or create a new one.

var log = [{ billkey: "Name", billvalue: "ABC" }, { billkey: "Department",  billvalue: "Computer" }, { billkey: "Name", billvalue: "XYZ" }, { billkey: "Department", billvalue: "Electrical" }],
    result = log.reduce(function (r, a, i) {
        var o = {};
        if (i % 2) {
            r[r.length - 1][a.billkey] = a.billvalue;
        } else {
            o[a.billkey] = a.billvalue;
            r.push(o);
        };
        return r;        
    }, []);

console.log(result);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392