Javascript中的Reduce

Javascript中的Reduce,javascript,reduce,Javascript,Reduce,所以我想转换: 来自: { emailNotify: { EQ: true }, foo: { bar: false } } [ {'condition': 'EQ', 'attribute': emailNotify, 'value': true}, {'condition': 'bar', 'attribute': foo, 'value': false} ] 至: { emailNotify: { EQ: true }, fo

所以我想转换:

来自

{
  emailNotify: {
    EQ: true
  },
  foo: {
    bar: false
  }
}
[
  {'condition': 'EQ', 'attribute': emailNotify, 'value': true},
  {'condition': 'bar', 'attribute': foo, 'value': false}
]

{
  emailNotify: {
    EQ: true
  },
  foo: {
    bar: false
  }
}
[
  {'condition': 'EQ', 'attribute': emailNotify, 'value': true},
  {'condition': 'bar', 'attribute': foo, 'value': false}
]
我尝试了以下代码:

var fromObj={
   emailNotify: {
        EQ: true
    },
    foo: {
        bar: false
    }
};

console.log(Object.keys(fromObj));
var result = (Object.keys(fromObj)).reduce(function(p,c,i,a){
    var newObj={};
    newObj["condition"]=Object.keys(fromObj[c])[0];
    newObj["attribute"]=c;
    newObj["value"]=fromObj[c][Object.keys(fromObj[c])[0]];
    p.push(newObj);
    return p;
},[]);


console.log("result", result);
你也是这样做的吗?我相信我没有正确使用reduce

附言:我得到了正确的结果!只是想知道这是否是elengant的方式?

它可以更简单:

var fromObj={
电邮通知:{
情商:没错
},
傅:{
酒吧:错
}
};
var result=Object.keys(fromObj).map(函数(键){
var subObj=Object.keys(fromObj[key]);
返回{
条件:subObj[0],
属性:键,
值:fromObj[key][subObj[0]]
};
});

警报(JSON.stringify(result,null,4))如果这些对象具有多个属性,则无法保证您将获得哪个属性作为属性0。它们始终具有一个属性;不过我讨厌
fromObj[c][Object.keys(fromObj[c])[0]
!保存调用
Object.keys(fromObj[c])[0]
的结果,而不是多次调用该结果。只需添加另一个
var
。这些问题应该发布在那里@Pasargad。两种方法都很好,我看不到任何偏好。。。