创造;m x n“;javascript中的二维数组
如果要在javascript中创建一个二维创造;m x n“;javascript中的二维数组,javascript,arrays,matrix,linear-algebra,Javascript,Arrays,Matrix,Linear Algebra,如果要在javascript中创建一个二维m x n数组,则基于列数(在我的函数中作为参数输入),行将从另一个参数创建,该参数将是数组 我希望实现的目标-期望的结果: var arr = [0,1,2,3,4,5,6,7,8,9] function TwoDimensionalArray(numRows, numCols) { //Magic happens here! } TwoDimensionalArray(arr, 4); var arr = [0,1,2,3,4,5,6,7,8,
m x n
数组,则基于列数(在我的函数中作为参数输入),行将从另一个参数创建,该参数将是数组
我希望实现的目标-期望的结果:
var arr = [0,1,2,3,4,5,6,7,8,9]
function TwoDimensionalArray(numRows, numCols) {
//Magic happens here!
}
TwoDimensionalArray(arr, 4);
var arr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13]
function TwoDimensionalArray(numRows, numColumns) {
var twoD = [];
for (var row = 0; row < numRows.length; ++row) {
var cardIndex = numRows[row]
// console.log(numRows[row]);
var columns = [];
for(var j =0; j < numColumns; ++j) {
columns[j] = cardIndex;
}
twoD[cardIndex] = columns;
}
return twoD;
};
var matrixTwoD = TwoDimensionalArray(arr, 4);
console.log(matrixTwoD);
console.log(matrixTwoD[0][0]);
console.log(matrixTwoD[0][1]);
console.log(matrixTwoD[0][2]);
console.log(matrixTwoD[0][3]);
如您所见,下面是一个3 x 4矩阵,是一个理想的结果
[[0,1,2,3],[4,5,6,7],[8,9]
输入大小不会产生差异,列数是关键因素和决定因素
我目前拥有的-不是期望的结果:
var arr = [0,1,2,3,4,5,6,7,8,9]
function TwoDimensionalArray(numRows, numCols) {
//Magic happens here!
}
TwoDimensionalArray(arr, 4);
var arr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13]
function TwoDimensionalArray(numRows, numColumns) {
var twoD = [];
for (var row = 0; row < numRows.length; ++row) {
var cardIndex = numRows[row]
// console.log(numRows[row]);
var columns = [];
for(var j =0; j < numColumns; ++j) {
columns[j] = cardIndex;
}
twoD[cardIndex] = columns;
}
return twoD;
};
var matrixTwoD = TwoDimensionalArray(arr, 4);
console.log(matrixTwoD);
console.log(matrixTwoD[0][0]);
console.log(matrixTwoD[0][1]);
console.log(matrixTwoD[0][2]);
console.log(matrixTwoD[0][3]);
var arr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
函数二维数组(numRows,numColumns){
var-twoD=[];
对于(变量行=0;行
我的当前代码创建了一个数组,该数组将每个元素重复4次,直到列大小为4的数字13:[[0,0,0,0],[1,1,1]…[13,13,13]
也许我在for循环中做错了什么,或者没有正确处理问题。但任何能为我指明正确方向的东西都能让我得到上述渴望的结果
Bouns
还有谁能给我指一下矩阵代数的额外资源,关于这类问题,以及任何有助于自学的东西
非常感谢 保持简单,将输入数组切成
numCols
length的部分
function TwoDimensionalArray(arr, numCols) {
var arr2d = [],
i;
if (numCols) // safety first!
for (i = 0; i < arr.length; i += numCols)
arr2d.push(arr.slice(i, i + numCols));
return arr2d;
}
函数二维数组(arr,numCols){
var arr2d=[],
我
if(numCols)//安全第一!
对于(i=0;i
在未提供numCols或if(numCols)
0
从for(i=0;i
中的numCols
0开始计数,例如
直到我们达到一个大于i=0,4,8,16,
arr.length
- 创建一个数组的子数组,从(包括)索引
开始,到(不包括)索引i
结束,即我们得到一个i+numCols
长数组,从numCols
的索引arr
处的项开始i
- 在
arr2d
将所有这些放在一起,我们可以看到,我们正在从数组的各个部分构建一个新的数组
arr2d
,arr计算所需的列,然后使用数组的切片方法
开始索引=(numColumns*i)
end index=numColumns*(i+1)
var arr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
函数二维数组(numRows,numColumns){
var列=[];
for(var i=0;i!==Math.ceil(numRows.length/numColumns);i++){
列[i]=numRows.slice((numColumns*i),numColumns*(i+1))
//console.log((numColumns*i)+“”+numColumns*(i+1))
}
返回列;
};
var matrixTwoD=二维阵列(arr,4);
console.log(matrixTwoD);
console.log(matrixTwoD[0][0]);
console.log(matrixTwoD[0][1]);
console.log(matrixTwoD[0][2]);
console.log(matrixTwoD[0][3])代码>一个很好的库:它提供矩阵操作。谢谢!但是你能详细说明一下这个过程吗?为什么会有这样的解决方案?只是为了学习。感谢:)@Amechi我在要点中添加了更多细节,而不是评论,因为我不确定你到底想知道哪些部分