是否可以使用项目更改对象中父项/子项的顺序?

时间:2015-09-26 08:52:08

标签: javascript underscore.js

我有一个看起来像这样的对象:

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) => {
  ...
}

1 个答案:

答案 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;
&#13;
&#13;