给我一个数组,const res = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
让我变成下图所示
首先,先将一维数组转化为二维数组
const res = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
let newRes=this.setTwoDimensionalArray(res)
console.log(newRes)
setTwoDimensionalArray(list) {
const listResult = []; // 最终返回的二维数组
for (let i = 0; i < Math.ceil((list.length / 7)); i++) {
listResult[i] = [];
for (let j = 0; j < 7; j++) {
// 如果是最后一个板块
if (i === (Math.ceil((list.length / 7)) - 1)) {
if (Math.ceil((list.length % 7)) !== 0) {
// 只有最后一个板块的数据在余数以内的才赋值
if (j < Math.ceil((list.length % 7))) {
listResult[i][j] = list[i * 7 + j];
}
} else {
// 如果刚好整整一个板块,则全部附上值
listResult[i][j] = list[i * 7 + j];
}
} else {
listResult[i][j] = list[i * 7 + j];
}
}
}
return listResult;
}
效果如图
其次通过矩形转置来实现,原理:
代码和效果图
//接上面得到的newRes
let newRes=[[1, 2, 3, 4, 5, 6, 7],[8, 9, 10, 11, 12, 13, 14],[15]]
let result = [];
for(let i = 0;i < newRes[0].length;i++){
result[i]=[];
}
for(let i = 0;i < newRes.length;i++){
for(let j = 0;j < newRes[i].length;j++){
result[j][i]=newRes[i][j];
}
}
console.log(result)
参考文档:一维数组转二维数组, 矩阵转置