javascript - 如何将对象数组展平为每个对象参数的数组?

标签 javascript jquery arrays underscore.js

我有一个这样的对象数组:

[
  {
    p1: 1
    p2: 2
  },
  {
    p1: 3
    p2: 4
  }
]

我想为对象的每个属性将其展平为一个数组(保持顺序):

[1, 3] and [2, 4]

最好将这些存储在以属性为键的字典中:

{
   p1: [1, 3],
   p2: [2, 4]
}

在 javascript 中是否有非暴力方法可以做到这一点?如果这些库在这里有任何帮助,我已经在使用 jQuery 和 Underscore.js。

我目前的计划是遍历数组中的所有对象,并手动将每个属性值添加到其对应的数组中。我很想知道是否有更有趣的方法来做到这一点。

最佳答案

如果每个对象的属性可靠地相同,您可以像这样使用下划线。

var keys = _.keys(arr[0]);

var newObj = _.reduce(keys,function(obj,key){
   obj[key] = _.pluck(arr,key)
},{});
//newObj will now be in the requested format

如果不同对象的属性不同,您需要执行一些额外的逻辑来获取要迭代的完整属性列表。

关于javascript - 如何将对象数组展平为每个对象参数的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992813/

相关文章:

javascript - 如何在 Angular2 中使用 chart.js?

c++ - 如何将一行中的前两个字符串写入各自的变量,并将该行的其余内容写入其自己的数组?

c++ - 分隔偶数和奇数的数组

javascript - Node.js 中的此绑定(bind)

javascript - 如何减少 Google Maps Places API v3 InfoWindow 的填充

javascript - jQuery datepicker altFormat 不显示

javascript - jsTree 在多棵树上拖放

jquery - 在css中设置图像可见区域

javascript - 如何使用 jQuery 获取 Ajax 请求数据?

javascript - 我的 JavaScript 数字排序器的三个问题