请教,一维数组整理成二维数组如何编写代码更为优雅?
因项目需要,现有一维数组需要重新按每10个元素为一个数组整理成二维数组.
例如,把arr1重新整理为arr2
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var arr2 = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
我目前想到的做法如下:
let arr = [];
let arr2 = [];
for(let i = 0,len = arr1.length; i < len; i++){
arr.push(arr1[i]);
if(i && i % 9 == 0){
arr2.push(arr);
arr = [];
continue;
}
if(i == len - 1) arr2.push(arr);
}
不知是否有更为优雅的写法和思路?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
两种方式:
let arr = [];
let arr2 = [];
for(let i = 0,j=0; i < arr.length; i++){
}
瞎写的
用slice或者splice
用slice创建副本的方式代替循环push操作
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var arr2 = [];
while(arr1.length){
}
弊端:arr1被修改,看需求如果需要保留arr1 可先创建一个副本
用
lodash
一行搞定,没有比这更优雅的了: