所以我想转换:

来自 :

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

关于javascript - 在 Javascript 中减少,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31123713/

10-08 23:04