在JS中根据需要的组大小将一维数组转换为多维数组的更好方法
Better way to turn a one-dimensional array into multi-dimensional array by required group size in JS
我对JS相当陌生,我正在处理一个问题,要求将数组(第一个参数)分成大小(第二个参数)的长度组,并将它们作为多维数组返回。我得到的问题工作正确的所有测试用例,但它建议使用数组' push() '方法。我试了很多次都没能让它正常工作。我想我搞砸了数组是通过引用的。最后,我为每个元素声明了一个新的Array。我使用了更经典的深度复制每个元素。我没有回去尝试' push() '方法。必须有更有效的方法来做这件事。我想写出好的代码。希望能看到更好的版本。谢谢!
function chunk(arr, size) {
var group = 0;
var counter = 0;
var even = false;
var odd = false;
if (arr.length % size === 0) {
group = arr.length / size;
even = true;
} else {
group = Math.ceil(arr.length / size);
odd = true;
}
var newArr = new Array(group);
for (var i = 0; i < group; i++) {
newArr[i] = new Array(size);
}
for (i = 0; i < group; i++) {
for (var j = 0; j < size && counter < arr.length; j++) {
newArr[i][j] = arr[counter++];
}
}
return newArr;
}
chunk(['a', 'b', 'c', 'd'], 2);
使用Array.prototype.slice
,可以用更短的方式编写该函数:
function chunk(array, size) {
var result = []
for (var i=0;i<array.length;i+=size)
result.push( array.slice(i,i+size) )
return result
}
您可以尝试Array对象中的slice方法。这里有一个关于如何使用它的想法。
var arr = [1, 2, 3, 4, 5, 6];
var newArr = [];
newArr.push(arr.slice(0, arr.length / 2));
newArr.push(arr.length / 2, arr.length);
这只是一个简单的实现,但是你可以在一个更好的函数中使用相同的概念。
下面是一个示例函数:
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
function toChunks(arr, size) {
var i = 0,
chunks = [];
for (; i < arr.length; i += size) {
chunks.push(arr.slice(i, i + size););
}
return chunks;
}
toChunks(arr, 2);
相关文章:
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 如何在javascript中使用2个一维数组创建层次结构树
- 我需要帮助在 javascript 中将 JSON 数据转换为 3 级多维数组
- PHP json_encode不适用于一维数组
- 如何在一维数组中存储 3 个随机数,然后在 Javascript 中收到警报
- 将字符串的一维数组转换为二维数组
- Javascript使用map从一维数组创建一个二维数组
- PHP 循环通过多维到一维数组
- 使用JavaScript将对象的多维数组转换为一维数组
- JavaScript在一维关联数组中转换多维数组
- 用一维数组过滤多维数组
- 在JS中根据需要的组大小将一维数组转换为多维数组的更好方法
- 如何在JavaScript中将2个一维数组连接成1个二维数组
- 如何将深度多维数组转换为一维数组-Javascript
- 使用JavaScript将一维数组转换为二维数组
- D3.js:通过 d3 加载平面一维数组.csv导致“类型错误:组数据未定义”/使用 D3.js 加载多个 CSV 文件
- 如何使用一维数组形成 JSON 数组
- 比较二维数组和一维数组并删除匹配项(JavaScript)
- 将一维数组转换为二维数组