Ответ 1
Вы можете сделать это с помощью flatten
и map
:
var firsts = _.chain(array)
.flatten(true) // This true is important.
.map(function(a) { return a[0] })
.value();
Демо: http://jsfiddle.net/ambiguous/cm3CJ/
Вы используете flatten(true)
для преобразования массива массивов массивов в массив массивов, а затем map
удаляет первый элемент каждого внутреннего массива.
Если вы хотите что-то короче map
, вы можете использовать pluck
, чтобы вытащить первый элемент внутренних массивов:
var firsts = _.chain(array)
.flatten(true) // This true is important.
.pluck(0)
.value();
Демо: http://jsfiddle.net/ambiguous/pM9Hq/
_.pluck
- это всего лишь вызов 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]; });
};
Этот выглядит намного больше как .map(&:first)
, который вы использовали бы в Ruby, чтобы он мог быть более знаком некоторым людям и более кратким, как только вы привыкли к pluck
. Если вы действительно хотите что-то Rubyish, вы можете использовать не анонимную функцию с map
:
var first = function(a) { return a[0] };
var firsts = _.chain(array)
.flatten(true) // This true is important.
.map(first)
.value();