减少 Javascript
Reduce in Javascript
所以我要转换:
发件人:
{
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?
PS:我得到了正确的结果!只是想知道这是不是优雅的方式?
Array.prototype.map可以更简单:
var fromObj={
emailNotify: {
EQ: true
},
foo: {
bar: false
}
};
var result = Object.keys(fromObj).map(function(key) {
var subObj = Object.keys(fromObj[key]);
return {
condition: subObj[0],
attribute: key,
value: fromObj[key][subObj[0]]
};
});
alert(JSON.stringify( result, null, 4 ));
所以我要转换:
发件人:
{
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?
PS:我得到了正确的结果!只是想知道这是不是优雅的方式?
Array.prototype.map可以更简单:
var fromObj={
emailNotify: {
EQ: true
},
foo: {
bar: false
}
};
var result = Object.keys(fromObj).map(function(key) {
var subObj = Object.keys(fromObj[key]);
return {
condition: subObj[0],
attribute: key,
value: fromObj[key][subObj[0]]
};
});
alert(JSON.stringify( result, null, 4 ));