在很多开发中会遇到一个一维数组,需要变为具有行和列的数据格式,比如一个数组有10个元素,需要变为多行,每行2列数组的格式,在前端开发中也有很多应用场景,以下将展示为实现这种功能的演示。
假设数组:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
需要根据动态列进行表格数据化,结果这里把它装在一个新的数组
方法一:抽取式
这种方式比较简单,在遍历数组的时候装入row(行数组),在每次遍历时检查行的元素长度是否到达col(预设列)长度,如果达到,把它放入nList(大数组),row并清空(等待下次再装入新元素),就像叉车从大货车卸货一样,装一堆(col个数量)为一次,来回一共row次。
function listToTableData(list, col) {
let nList = [], row = []
list.forEach((n,i)=>{
row.push(n)
if (row.length === col||list.length-1===i) {
nList.push(row)
row = []
}
})
return nList
}
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(`data is ${JSON.stringify(listToTableData(arr, 3))}`)
// 测试打印结果为 [[1,2,3],[4,5,6],[7,8,9],[10]]