从1d数组创建2d数组
Creating 2d-array from 1d array
我是编程新手,我有一个任务要求从1d数组创建一个2d数组。我想到了这个(没有任何外部来源的帮助,因为它带走了学习经验(。它适用于我们的教授测试输入,我只是想知道这是一个丑陋/低效的解决方案。
function twoDArray(arr, lenSubArray) {
var newArr = [];
var placeHolder = 0;
var leftOver = 0;
for (var i = 1; i < arr.length + 1; i++) {
/* if i is a multiple of the specified sub-array size
then add the elements from placeHolder to i
*/
if (i % lenSubArray === 0) {
newArr.push(arr.slice(placeHolder, i));
placeHolder += lenSubArray;
leftOver++; // tells us how many sub-arrays were created
}
}
/* if original array is not divisible by the length of the specified sub-array
then there will be left over values. Retrieve these values and create an
array out of them and add them to the 2d array.
*/
if (!(arr.length % lenSubArray === 0)) {
/* sub-array count multiplied by the length of each
sub-array gives us the right index to retrieve remaining values
*/
leftOver = (leftOver * lenSubArray);
newArr.push(arr.slice(leftOver))
}
return newArr;
}
测试输入:两个DArray([1,2,3,4,5],3(输出为:[[1,2,3],[4,5]]
你太复杂了:
- 创建结果数组
- 将切片从
i
推送到i+lenSubArray
i
乘以lenSubArray
切片足够智能,可以正确处理阵列的末端
function twoDArray(arr, lenSubArray) {
var i = 0, result = [];
while(i < arr.length)
result.push( arr.slice(i, i+=lenSubArray) );
return result;
}
您可以使用Array#reduce
并基于索引构建新的数组。
function twoDArray(array, length) {
return array.reduce(function (r, a, i) {
i % length ? r[r.length - 1].push(a) : r.push([a]);
return r;
}, []);
}
console.log(twoDArray([1, 2, 3, 4, 5], 3));
您不需要对数组进行迭代。您可以使用Array.prototype.slice
函数。
function twoDArray(a, b){
return (Array(Math.ceil(a.length / b)) + '').split(',').map(function(c, d){
return a.slice(b * d, b * (d + 1));
});
}
以下是您如何称之为
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
console.log(twoDArray(a, 3));
// Output:
// [
// [1, 2, 3],
// [4, 5, 6],
// [7, 8, 9],
// [10, 11, 12]
// ]
相关文章:
- 匹配 2D 数组中的连续值
- 为什么用javascript覆盖2D数组的元素
- 在2D数组中动态推送新列
- 如何在javascript中创建一个空的2d数组?下面是我想要创建的一个示例
- 2D数组在Angular JS 1.2.x中工作,而不是在1.3.x中工作
- node.js上的过程性2d数组mongoDB插入内存不足
- 如何在 javascript 中删除 2d 数组中的行
- TypeError: matrix[y].push 在尝试使用 javascript 创建 2D 数组时不是一个函数
- 练习 2D 数组
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- 如何在动态生成的 HTML 表中使用 2D 数组在 TD 标签中设置值
- 存储在 2D 数组中的 js 调用函数
- 将 2D 数组从 Code Behind 传递给 JavaScript
- 嵌套的 Jquery 每个 2D 数组错误地重复表单元格
- 如何在 2d 数组中找到 1d 数组
- 将2D对象数组C#转换为MVC中的Javascript
- 2d数组在ajax调用中崩溃
- 将具有类似数组内容的字符串转换为2D数组
- JavaScript将JSON存储在2D数组中
- 嵌套循环中数组2d中的javascript变量丢失