我有一个看起来像这样的对象:
sum = {
value:{
a: 10,
b: 11
}
value2:{
a: 33,
c: 12
}
..
}
我的对象更复杂,字母确实包含具有不同值的对象,但关键是,我希望遍历每个值中存在的所有字母并返回对象,如:
a:{
value: 10,
value2: 33
}
我可以遍历整个事物构建一个新对象,但是有一种更有效的“翻转对象顺序吗?”
我只想使用所有值对象中存在的键,我现在得到这样的键,但这不是必需的。
value = ['value', 'value2']
tags.forEach( (tag) =>
keys.push(Object.keys(sum[tag]))
)
matches = _.intersection.apply(_, keys);
matches.forEach( (match) => {
...
}
答案 0 :(得分:3)
此解决方案具有重新组织属性的顺序。
grouped[kk][k] = sum[k][kk] for all elements
var sum = {
value: {
a: 10,
b: 11
},
value2: {
a: 33,
c: 12
}
},
grouped = {};
Object.keys(sum).forEach(function (k) {
Object.keys(sum[k]).forEach(function (kk) {
grouped[kk] = grouped[kk] || {};
grouped[kk][k] = sum[k][kk];
});
});
document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');
&#13;