将嵌套数组合并为一个?

m0n*_*r31 3 javascript arrays underscore.js lodash

假设我有一个类似于此的对象数组:

[
   {
     id: ...,
     name: "...",
     users: [1, 2, 3]
    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

有没有办法可以轻松地将每个对象的.users数组合并到一个数组中?

Gru*_*nny 9

Pluck'n'flatten将做你想要的:

var result = _.flatten(_.pluck(data, 'users'));
Run Code Online (Sandbox Code Playgroud)

编辑

正如Richard指出的那样,在版本4.0.0中从lodash中删除了pluck,但在编写时仍然保留在当前版本的下划线中(1.8.3).

替换地图适用于lodash和下划线:

var result = _.flatten(_.map(data, 'users'));
Run Code Online (Sandbox Code Playgroud)

  • 现在是 var result = _.flatten(_.map(data, 'users')); 由于 pluck 已弃用并已删除。 (2认同)