我想知道lodash用于重塑数组的习惯用法是什么?
基本上,我正在寻找能够改变这个数组的东西:[1,2,3,4,5,6,7,8]到这一个(在这种情况下,我们将每个数组分组,但我们假设我们是每个N)分组[[1,2,3],[4,5,6],[7,8]]
我不太清楚如何在纯js中完成这个,但是我在lodash中重写它的所有尝试都很好,毕竟不太可读.
简单的解决方案:
function reshape(array, n){
return _.compact(array.map(function(el, i){
if (i % n === 0) {
return array.slice(i, i + n);
}
}))
}
Run Code Online (Sandbox Code Playgroud)
一个简单的递归解决方案:
function reshape(array, n) {
if (array.length === 0)
return [];
return [_.take(array, n)].concat(reshape(_.rest(array, n), n));
}
Run Code Online (Sandbox Code Playgroud)
有点晚了,但作为一个额外的例子,你可以使用zip.
例如:
.zip.apply(,__ chunk("你的数组","列"));
这是如何工作的:
假设你有一个数组= [1,2,3,4,5,6,7,8,9,10,11,12,13,14等]
_.chunk(array,3)会给你[[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14]]
.zip.apply(,__ chunk(array,3)); 会给你:[[1,4,7,10,13],[2,5,8,11,14],[3,6,9,12]]
归档时间: |
|
查看次数: |
4810 次 |
最近记录: |