vue 数据大屏项目开发中,客户要求进行轮播显示,页面里面每次可以展示5个,所以这里需要将一维数组5个为一组拆分为2维数组,然后进行轮播显示。接下来我们要对数组进行处理。当然使用lodash也是可以实现这种效果的,lodash 将数组拆分成多个 size 长度的区块,并将这些区块组成一个新数组,不过这次想看看普通的js是如何实现的。
可以使用双重循环将一维数组拆分为二维数组,每5个元素为一组。具体实现如下:
function splitArray(arr) {
const result = [];
const len = arr.length;
for (let i = 0; i < len; i += 5) {
const row = [];
for (let j = 0; j < 5; j++) {
if (i + j < len) {
row.push(arr[i + j]);
}
}
result.push(row);
}
return result;
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
const result = splitArray(arr);
console.log(result); // [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11]]
在上面的代码中,我们首先定义了一个名为splitArray
的函数,该函数接收一个一维数组arr
作为参数,返回一个二维数组result
。接下来,我们使用for
循环遍历一维数组,每5个元素为一组,定义一个名为row
的数组用于保存每一行的元素。在每一组中,我们使用另一个for
循环遍历5个元素,如果当前元素的索引超过了一维数组的长度,则跳过该元素。最后,我们将每一行的元素添加到二维数组result
中,并返回结果。