1、利用while循环从左至右插入数组,会改变原数组长度。
@params {row:行数,arr:需要处理的一维数组}
arrTrans(row, arr) {
const newArr = [];
while (arr.length > 0) {
newArr.push(arr.splice(0, row));
}
return newArr;
}
2、利用数组的slice方法对一维数组进行切割再push到一个大数组中,会改变原数组长度。
arrTrans(row, arr) {
const newArr = [];
let len = arr.length
let lineNum = len % row === 0 ? len / row : Math.floor( (len / row) + 1 );
for (let i = 0; i < lineNum; i++) {
let temp = arr.slice(i*n, i*n+n);
newArr.push(JSON.parse(JSON.stringify(temp)));
}
return newArr
}
3、利用矩阵循环行和列,进行数组行和列的重新插入,不改变原数组长度。
arrTrans(row, arr) {
const newArr = [];
for (let i = 0, j = 0; i < arr.length; i += row) {
newArr[j] = []
for (let k = 0; k < row; k++) {
if (i + k < arr.length)
newArr[j].push(arr[i + k])
}
j++
}
return newArr
}
4、简单数组遍历判断行数,不改变原数组
arrTrans(row, arr) {
const newArr = [];
for (let i = 0; i < arr.length; i++) {
const total = Math.floor(i / row) //判断当前在第几行
if(!(newArr[total])){ //判断当前是否有数组
newArr[total]=[] //如果没有赋值一个空的行数组
}
newArr[total].push(arr[i]) // 并且把当前对应的索引里面进行添加
}
return newArr
}