groupBy 这个方法,可以对一个列表,用某种方式进行分组 ... 比如这里有一个叫 fruits 的数组 ... 里面是一些水果的英文名字 ... 下面,我们可以使用 groupBy ,按照项目的字符数去分一下组 ...
_.groupBy ... 要分组的列表是 fruits ... 然后再指定一下按照什么标准去分组,这里可以使用一个迭代器,也可以直接使用属性的名字 .. 我们用一个 length 属性,它表示项目的字符长度 ...
_.groupBy(fruits, 'length')
返回的是一个对象 ... 这个对象里面有几个属性 ... 属性名是 4 的这个项目里面,包含一个 pear ... 这个数字 4 实际上就是 fruits 这个列表里面的项目的字符串的长度 ... 也就是,在这个列表里面,所有的长度是 4 的项目,都会在这里面 ... 因为在 fruits 里面,只有 pear 是 4 个字符 .. 所以这个小组里面,只有一个 pear ..
下面还有一个 5 .. 里面有 apple 这个项目 ... 最后还有一个 6 ,这里面有两个项目 ... orange ,还有 apple ..
我们再看一下 albums 这个对象 ... (#albums)
下面, 用项目里的 artist 这个属性去给这个列表分一下组 ... groupBy ... 要分组的是 albums ... 给它一个迭代器参数 ... 用 album 表示这个列表里面的单个项目 ... 然后在函数里面,返回要分组用的标准 .. 这里就是 album 的 artist 这个属性 ...
_.groupBy(albums, function(album){ return album.artist; })
回车 ... 返回的结果同样是一个对象 ... 里面有两个属性 ... 也就是把 albums 这个列表分成了两个小组 ... 一个是 Beyond ... 在这里有包含两个项目 ... 应该就是 继续革命,还有海阔天空这两张专辑项目 ...
因为这两个项目的 artist 属性的值都是 Beyond ...
最后还有一个 Coldplay 这个属性 ... 在这里只有一个项目 ... 就是 Ghost Story 这张专辑项目 ...