Javascript equivalent of Python's zip function

前端 未结 18 1673
天命终不由人
天命终不由人 2020-11-21 07:40

Is there a javascript equivalent of Python\'s zip function? That is, given multiple arrays of equal lengths create an array of pairs.

For instance, if I have three

18条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2020-11-21 07:52

    Like @Brandon, I recommend Underscore's zip function. However, it acts like zip_longest, appending undefined values as needed to return something the length of the longest input.

    I used the mixin method to extend underscore with a zipShortest, which acts like Python's zip, based off of the library's own source for zip.

    You can add the following to your common JS code and then call it as if it were part of underscore: _.zipShortest([1,2,3], ['a']) returns [[1, 'a']], for example.

    // Underscore library addition - zip like python does, dominated by the shortest list
    //  The default injects undefineds to match the length of the longest list.
    _.mixin({
        zipShortest : function() {
            var args = Array.Prototype.slice.call(arguments);
            var length = _.min(_.pluck(args, 'length')); // changed max to min
            var results = new Array(length);
            for (var i = 0; i < length; i++) {
                results[i] = _.pluck(args, "" + i);
            }
            return results;
    }});
    

提交回复
热议问题