下划线而不是for循环

时间:2015-06-23 06:31:47

标签: underscore.js lodash

鉴于我有一个像这样的数组

var arr = [ { "language" : "en", "level" : "C2", "primary" : true }, 
            { "language" : "fr", "level" : "B1", "learning" : true }, 
            { "language" : "it", "level" : "A2" } ]

我想将所有“语言”值收集到一个数组中,如下所示:

["en", "fr", "it"]

我知道我可以用for循环来做,但是我如何使用Underscore / LoDash呢?

我如何通过其中一个布尔字段进行排序,然后是alpha,即:如果按“学习”布尔值排序:

["fr", "en", "it"]

1 个答案:

答案 0 :(得分:2)

使用_.sortByAll_.pluck函数的组合(链接到jsbin):

var arr = [ { "language" : "en", "level" : "C2", "primary" : true }, 
            { "language" : "fr", "level" : "B1", "learning" : true }, 
            { "language" : "it", "level" : "A2" } ];

var res = _.pluck(_.sortByAll(arr, 'learning', 'language'), 'language');

console.log(res);

.sortByAll会根据learning字段然后按language对您的数组进行排序。 .pluck将从数组中的每个对象获取给定字段(在您的情况下为language)。