下划线而不是 for 循环

Underscore instead of a for loop

鉴于我有这样的数组

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

我想将所有 "language" 值收集到一个数组中,如下所示:

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

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

我将如何按布尔字段之一排序,然后按 alpha 即:如果按 "learning" 布尔值排序:

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

使用_.sortByAll_.pluck函数的组合(link到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 will sort your array firt by learning field and then by language. And .pluck 将从数组中的每个对象中获取给定字段(在您的情况下为 language)。