JavaScript一维数组转二维数组
[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 ...
·
[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));
更多推荐
已为社区贡献14条内容
所有评论(0)