[英]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. 我有一个对象数组,其中将billkey和billvalue存储为属性。 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.