【问题标题】:Unflatten Arrays into groups of fours [closed]将数组展开成四组[关闭]
【发布时间】:2013-11-28 04:43:48
【问题描述】:

我有一个数组如下:

var someArray = ['val1','val2','val3','val4','val5','val6','val7','val8','val9','val10','val11','val12'];

我正在尝试找出一种优雅的方式,使用 underscore,将其简单地转换为这样的数组数组...

[['val1','val2','val3','val4'], ['val5','val6','val7','val8'], ['val9','val10','val11','val12']]

其中新数组的每个索引都是来自第一个数组的四个元素的组。使用underscore.js 是否有一种简单优雅的方式来做到这一点。

【问题讨论】:

  • 谢谢大家。我已经有了一个简单的 JS 解决方案。我想看看下划线中是否有一些更简单的标准函数。

标签: javascript arrays underscore.js


【解决方案1】:

下划线,既然你问了: (Example)

var i = 4, list = _.groupBy(someArray, function(a, b){
    return Math.floor(b/i);
});
newArray = _.toArray(list);

原版 JS: (Example)

var newArray = [], size = 4;
while (someArray.length > 0) newArray.push(someArray.splice(0, size));

【讨论】:

    【解决方案2】:

    纯 JavaScript 解决方案,使用 splice():

    Object.defineProperty( Array.prototype, 'eachConsecutive', {
      value:function(n){
        var copy = this.concat(), result = [];
        while (copy.length) result.push( copy.splice(0,n) );
        return result;        
      }
    });
    
    var someArray = ['val1','val2','val3','val4','val5','val6','val7','val8','val9','val10','val11','val12'];
    var chunked = someArray.eachConsecutive(4);
    //-> [["val1","val2","val3","val4"],["val5","val6","val7","val8"],["val9","val10","val11","val12"]]
    

    【讨论】:

    • 因为篡改原型而投反对票
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2021-11-28
    • 2017-09-24
    • 2021-12-27
    • 2020-10-09
    相关资源
    最近更新 更多