鉴于我有一个像这样的数组
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"]
答案 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
)。