如何在JavaScript中将哈希转换为单个对象?

如何在JavaScript中将哈希转换为单个对象?,javascript,arrays,object,Javascript,Arrays,Object,我有一个如下格式的对象数组: var log=[ { billkey:"Name", billvalue:"ABC" }, { billkey:"Department", billvalue:"Computer" }]; 我想在单个对象中转换,如: var log={ "Name":"ABC", "Department":"Computer" }; 我尝试了以下方法: for(var i=0;i<log.length;++i){

我有一个如下格式的对象数组:

var log=[
{
  billkey:"Name",
  billvalue:"ABC"
},
{ 
  billkey:"Department",
  billvalue:"Computer"
}];
我想在单个对象中转换,如:

var log={
       "Name":"ABC",
       "Department":"Computer"
     };
我尝试了以下方法:

for(var i=0;i<log.length;++i){
   pushToAry(log[i].billkey, log[i].billvalue);
}

function pushToAry(name, val) {
 var obj = {};
 obj[name] = val;
 ary.push(obj);
 }
如何将此对象数组转换为对象?

var obj={};
var obj = {};
for (var i = 0; i < log.length; i++)
    obj[log[i].billkey] = log[i].billvalue;
对于(变量i=0;i
首先,我准备一个空对象来存储reult。然后我遍历日志,在每次迭代中,我提取日志记录的键(
log[I].billkey
)和值(
log[I].billvalue
),并使用它将新成员添加到结果中:
obj[…key…]=…value

您可以使用
reduce()
返回对象

var日志=[{
billkey:“姓名”,
billvalue:“ABC”
}, {
billkey:“部门”,
billvalue:“计算机”
}];
var result=log.reduce((r,e)=>(r[e.billkey]=e.billvalue,r),{});
console.log(result)
您可以使用它将其还原为所需的对象-请参阅下面的演示:

var log=[{billkey:“Name”,billvalue:“ABC”},{billkey:“Department”,billvalue:“Computer”}];
var结果=log.reduce(函数(p,c){
p[c.billkey]=c.billvalue;
返回p;
},{})

控制台日志(结果)如果您只想使用循环,可以这样做:

var日志=[
{
billkey:“姓名”,
billvalue:“ABC”
},
{
billkey:“部门”,
billvalue:“计算机”
}];
var result={};
log.forEach(x=>result[x.billkey]=x.billvalue);

控制台日志(结果)在ES6中,这是非常干净的:

let result = {};

for (let {billkey, billvalue} of log)
    result[billkey] = billvalue;
或者,如果您更喜欢“功能性”样式:


请添加解释。试着评估你头脑中的每一步——它是这样的:
obj['Name']='ABC'
obj['Department']='Computer'伙计,我知道你的代码是如何工作的,但答案的关键是帮助每个人,解释是其中非常重要的一部分。仅仅编写代码是不够的。你还应该解释你改变了什么,为什么改变?下次有人礼貌地要求你时,请用礼貌的回答来回答,而不是评估你头脑中的每一步。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@Rajesh:对不起,如果你认为我的回答不礼貌,我不是故意的。我将对答案作一些解释。
let result = {};

for (let {billkey, billvalue} of log)
    result[billkey] = billvalue;
let result = Object.assign(...log.map(x => (  {[x.billkey]: x.billvalue} )))