下划线而不是 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
)。
鉴于我有这样的数组
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
)。