简体   繁体   English

如何将对象数组转换为不同格式的对象数组?

[英]How to convert array of object into an array of object with different format?

I'm having an array of object,in which I'm storing the billkey and billvalue as attributes. 我有一个对象数组,其中将billkeybillvalue存储为属性。 I want billkey to be the key and billvalue to be the value of that particular key. 我希望billkey是键,而billvalue是该特定键的值。

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"
    }];

create the result using forloop 使用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);

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); 

You could use Array#reduce and use the remainder operator as witch for using either the last object or create a new one. 您可以使用Array#reduce并将其余运算符用作使用最后一个对象或创建新对象的女巫。

 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); 

Use a simple for loop for that. 为此使用一个简单的for循环。

 var log = [{ billkey: "Name", billvalue: "ABC" }, { billkey: "Department", billvalue: "Computer" }, { billkey: "Name", billvalue: "XYZ" }, { billkey: "Department", billvalue: "Electrical" }]; // array for storing result var res = []; // iterate upto the half length of the array // since you are generating single element using // two adjacent elements in the array for (var i = 0; i < log.length / 2; i++) { // initialize empty object var obj = {}; // define first property of the object obj[log[2 * i].billkey] = log[2 * i].billvalue; // define the second property of the object obj[log[2 * i + 1].billkey] = log[2 * i + 1].billvalue; // push the object into the array res.push(obj); } console.log(res) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM