如何使用javascript通过对象属性将数组拆分为数组?

And*_*yce 5 javascript arrays underscore.js

我目前有一个类似于下面数组的数组:

[
      {id:1,color:'red'},
      {id:2,color:'blue'},
      {id:3,color:'red'},
      {id:4,color:'green'},
      {id:5,color:'blue'},
]
Run Code Online (Sandbox Code Playgroud)

我正在寻找最快的方法来获得类似下面的东西,我可以通过对象中的属性对数组进行拆分/排序,在这个例子中它将是'color':

[
      [
        {id:1,color:'red'},
        {id:3,color:'red'},
      ],[
        {id:2,color:'blue'},
        {id:5,color:'blue'},
      ],[
        {id:4,color:'green'},
    ]
]
Run Code Online (Sandbox Code Playgroud)

我可以为此编写一个函数,但我认为在underscore.js中可能有一些事情要做,但没有找到它的运气.

bob*_*per 2

您需要使用下划线功能,您可以在此处的groupBy文档中找到它。

groupBy_.groupBy(list, iterator, [context])
将集合拆分为多个集合,并按通过迭代器运行每个值的结果进行分组。如果迭代器是字符串而不是函数,则按每个值上迭代器命名的属性进行分组。

[
      {id:1,color:'red'},
      {id:2,color:'blue'},
      {id:3,color:'red'},
      {id:4,color:'green'},
      {id:5,color:'blue'},
]

_.groupBy(a, function(x){ return x.color; });
Run Code Online (Sandbox Code Playgroud)

  • 其结果需要包装在 `_.toArray()` 中以获得所需的输出 (2认同)