Javascript 如何使用下划线';返回多维数组中的第一项的链式方法?

Javascript 如何使用下划线';返回多维数组中的第一项的链式方法?,javascript,underscore.js,chaining,chain,Javascript,Underscore.js,Chaining,Chain,假设我有一个数组,我想返回数组中每个数组的第一个元素: array = [[["028A","028B","028C","028D","028E"], ["028F","0290","0291","0292","0293"], ["0294","0295","0296","0297","0298"], ["0299","029A","029B","029C","029D"], ["029E","029F","02A0

假设我有一个数组,我想返回数组中每个数组的第一个元素:

array = [[["028A","028B","028C","028D","028E"],
          ["028F","0290","0291","0292","0293"],
          ["0294","0295","0296","0297","0298"],
          ["0299","029A","029B","029C","029D"],
          ["029E","029F","02A0","02A1","02A2"]],
         [["02A3","02A4"],
          ["02A5", "02A6"]];
我知道我可以做这样的事情:

var firsts = [];
_.each(array, function(item){
  _.each(item, function(thisitem){
    firsts.push(_.first(thisitem));
  });
});
但是,如果我想使用下划线的
\uu.chain()
方法来执行该操作,该怎么办?只是学习下划线,到目前为止似乎非常有用。

您可以通过以下方式完成:

演示:

使用
flatten(true)
将数组数组转换为数组数组,然后
map
剥离每个内部数组的第一个元素

如果您想要比
映射
更短的内容,可以使用来拉出内部数组的第一个元素:

var firsts = _.chain(array)
              .flatten(true) // This true is important.
              .pluck(0)
              .value();
演示:

只是一个
map
调用:

// Convenience version of a common use case of `map`: fetching a property.
_.pluck = function(obj, key) {
  return _.map(obj, function(value){ return value[key]; });
};
这一个看起来更像Ruby中使用的
.map(&:first)
,因此,当您习惯于
抓取时,它可能对某些人更熟悉,也更简洁。如果您真的想要一些rubysh,您可以使用带有
map
的非匿名函数:

var first  = function(a) { return a[0] };
var firsts = _.chain(array)
              .flatten(true) // This true is important.
              .map(first)
              .value();

在这种情况下,我发现弹拨的使用非常有趣。它为提取秒数、三分之一等铺平了道路。Rubish解决方案从一开始就使用下划线,可以使用以下代码作为第一行:
var first=function(a){return}.first(a);}
@ChaosManor:你甚至不需要在下划线中使用
第一个
。第一个
,你可以说
.map(u.first)
var first  = function(a) { return a[0] };
var firsts = _.chain(array)
              .flatten(true) // This true is important.
              .map(first)
              .value();