ikemonn's blog

技術ネタをちょこちょこと

【Underscore.js】_.zipを読んだ

jashkenas/underscore_.zipを読んだ。

概要

_.zip(*arrays) 

引数である各配列のindex値の値をまとめた配列を作る。返される配列のlengthは引数の中で1番長いlengthを持つ配列と同じ長さになる。

var x = _.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
console.log(x); // [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]

ソースコード

  _.zip = function() {
    return _.unzip(arguments);
  };

  _.unzip = function(array) {
    var length = array && _.max(array, getLength).length || 0;
    var result = Array(length);

    for (var index = 0; index < length; index++) {
      result[index] = _.pluck(array, index);
    }
    return result;
  };

下記のコードで、引数のそれぞれの配列に対し、そのindex番目を結果にいれている。

for (var index = 0; index < length; index++) {
    result[index] = _.pluck(array, index);
}

参考

jashkenas/underscore