开发时遇上一个将一维数组转换成二维数据结构的要求,记录一下工具函数。
说明:(这是一个函数,直接复制到<javaScript></javaScript> 标签内即可使用,下面有使用图例)
/** * * @param fromArr 需要转换的一维数组(源数组) * @param mountOfEachLine 目标数组内的子数组元素个数(例:若要的到这样的结构 -> [[1,2],[3,4],[5,6],[7,8],[9,10]] , 则mountOfLine = 2) * @returns newArr 数据结构样式 -> [[1,2],[3,4],[5,6],[7,8],[9,10]] */ function fun(fromArr,mountOfEachLine) { //装二维数组的容器(目标数组) let newArr = []; //源数组元素个数 let len = fromArr.length; //计算出指定好的 mountOfLine 源数组能分成几个子数组 let lineNum = len % mountOfEachLine == 0 ? len / mountOfEachLine : Math.ceil(len / mountOfEachLine); //将源数组的元素拿出来,放到新数组 newArr 容器内 for (let i = 0; i < lineNum; i++) { let tempElement = fromArr.slice(i*mountOfEachLine,(i+1)*mountOfEachLine); newArr.push(tempElement); } return newArr; }
使用代码图示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var fromArr = [1,2,3,4,5,6,7,8,9,10];
var mountOfLine = 2;
var data = fun(fromArr,mountOfLine);
console.log('data ',data)
/**
*
* @param fromArr 需要转换的一维数组(源数组)
* @param mountOfEachLine 目标数组内的子数组元素个数(例:若要的到这样的结构 -> [[1,2],[3,4],[5,6],[7,8],[9,10]] , 则mountOfLine = 2)
* @returns newArr 数据结构样式 -> [[1,2],[3,4],[5,6],[7,8],[9,10]]
*/
function fun(fromArr,mountOfEachLine) {
//装二维数组的容器(目标数组)
let newArr = [];
//源数组元素个数
let len = fromArr.length;
//计算出指定好的 mountOfLine 源数组能分成几个子数组
let lineNum = len % mountOfEachLine == 0 ? len / mountOfEachLine : Math.ceil(len / mountOfEachLine);
//将源数组的元素拿出来,放到新数组 newArr 容器内
for (let i = 0; i < lineNum; i++) {
let tempElement = fromArr.slice(i*mountOfEachLine,(i+1)*mountOfEachLine);
newArr.push(tempElement);
}
return newArr;
}
</script>
</body>
</html>