JavaScript一维数组转二维数组
程序开发
2023-09-12 18:50:54
[1, 2, 3, 4, 5, 6, 7, 8] 实现效果 [[1, 2, 3, 4], [5, 6, 7, 8]]
1. slice截取
function fn(arr, num) {let newArr = []const total = Math.ceil(arr.length / num)console.log(total);for (let i = 0; i < total; i++) {a = arr.slice(i * num, (i + 1) * num)newArr.push(a)}return newArr}let arr = [1, 2, 3, 4, 5, 6, 7, 8]console.log(fn(arr, 4));
newArr 用来接收转换的二维数组
total 代表外层数组需要包含几个内层数组
slice进行分隔 第一个参数 开始截取的索引 第二个参数 结束的索引
把每次截取的数组添加到newArr里
2.splice
先来学习一下深拷贝高级的代码
JSON.parse(JSON.stringify(obj||arr))
function fn(arr, num) {let newArr = []let copyArr = JSON.parse(JSON.stringify(arr))const total = Math.ceil(arr.length / num)console.log(total);for (let i = 0; i < total; i++) {a = copyArr.splice(0, num)newArr.push(a)}return newArr}let arr = [1, 2, 3, 4, 5, 6, 7, 8]console.log(fn(arr, 4));
思路大致一致 只不过这次拿到的是splice的返回值
注意直接splice拿到返回值 会改变原数组 注意哦 !! 相当于把原数组全部删除了,任何情况下最好都不要删除原数组,因为原数组可能还有别的地方要用到哈!
3. 遍历判断
function fn(arr, num) {let newArr = []arr.forEach((it,idx) => {const total = Math.floor(idx / num) //判断当前在第几个数组内if(!(newArr[total])){ //判断当前是否有数组newArr[total]=[] //如果没有赋值一个空}newArr[total].push(it) // 并且把当前对应的索引里面进行添加});return newArr}let arr = [1, 2, 3, 4, 5, 6, 7, 8]console.log(fn(arr, 4));
标签:
上一篇:
ajax发送请求的数据类型
下一篇:
相关文章
-
无相关信息