在 javascript 的二维数组中插入 1 个值
Insert 1 value in 2d array in javascript
我的代码需要一些帮助。我尝试在每个数组中只插入一个值。我需要先填写该行,然后再填写,如果该行已满,则移至下一列。我试图解决这部分几天,但我失败了。所以这是我的代码
const testData = [1,2,3,4,5,6,7,8,9];
const create2dArray = (row, column) => {
var result = [];
for(let i = 0; i< row; i++){
result[i]= [];
for(let j = 0; j<column; j++){
result[i][j] = [];
for(let e = 0; e < testData.length; e++){
result[i][j] = [testData[e]];
}
}
}
return result;
}
let Column = 5
let Row = 5
filterQuotaData(EnrollmentQuota);
var ground = create2dArray(Column,Row);
console.log(ground);
假设输出为:
[1],[2],[3],[4],[5]
[6],[7],[8],[9],[]
[],[],[],[],[]
[],[],[],[],[]
[],[],[],[],[]
相反,我得到了:
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
希望有人能帮我解决这个问题
以下代码
const testData = [1,2,3,4,5,6,7,8,9];
const create2dArray = (row, column) => {
var result = [];
k = 0
for(let i = 0; i< row; i++){
result[i]= [];
for(let j = 0; j<column; j++){
if(k < testData.length) {
result[i][j] = [testData[k]];
} else {
result[i][j] = [];
}
k++
}
}
return result;
}
let Column = 5
let Row = 5
//filterQuotaData(EnrollmentQuota);
var ground = create2dArray(Column,Row);
console.log(ground);
生产
[
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ] ],
[ [ 6 ], [ 7 ], [ 8 ], [ 9 ], [] ],
[ [], [], [], [], [] ],
[ [], [], [], [], [] ],
[ [], [], [], [], [] ]
]
它是你需要的吗?
您的代码中发生的事情是,您在第三个循环中将所有内容添加到第二个循环中的每一列。它们都是 9 的原因是因为您通过使用赋值而不是将其添加到数组来覆盖每一列:
// 3rd loop
array[0][0][0] = 1 // 1st iteration [[[1],...]]
array[0][0][1] = 2 // 2nd iteration [[[2],...]]
这是一个使用 2 个循环并压入 sub-arrays 并从测试数组转移的示例。
const test = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const create2dArray = (row, column) => {
let result = [];
for (let r = 0; r < row; r++) {
result.push([]);
for (let c = 0; c < column; c++) {
let data = test.length < 1 ? [] : [test.shift()]
result[r].push(data);
}
}
return result;
}
let row = 5, col = 5;
let ground = create2dArray(row, col);
console.log(JSON.stringify(ground));
我的代码需要一些帮助。我尝试在每个数组中只插入一个值。我需要先填写该行,然后再填写,如果该行已满,则移至下一列。我试图解决这部分几天,但我失败了。所以这是我的代码
const testData = [1,2,3,4,5,6,7,8,9];
const create2dArray = (row, column) => {
var result = [];
for(let i = 0; i< row; i++){
result[i]= [];
for(let j = 0; j<column; j++){
result[i][j] = [];
for(let e = 0; e < testData.length; e++){
result[i][j] = [testData[e]];
}
}
}
return result;
}
let Column = 5
let Row = 5
filterQuotaData(EnrollmentQuota);
var ground = create2dArray(Column,Row);
console.log(ground);
假设输出为:
[1],[2],[3],[4],[5]
[6],[7],[8],[9],[]
[],[],[],[],[]
[],[],[],[],[]
[],[],[],[],[]
相反,我得到了:
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
[9],[9],[9],[9],[9]
希望有人能帮我解决这个问题
以下代码
const testData = [1,2,3,4,5,6,7,8,9];
const create2dArray = (row, column) => {
var result = [];
k = 0
for(let i = 0; i< row; i++){
result[i]= [];
for(let j = 0; j<column; j++){
if(k < testData.length) {
result[i][j] = [testData[k]];
} else {
result[i][j] = [];
}
k++
}
}
return result;
}
let Column = 5
let Row = 5
//filterQuotaData(EnrollmentQuota);
var ground = create2dArray(Column,Row);
console.log(ground);
生产
[
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ] ],
[ [ 6 ], [ 7 ], [ 8 ], [ 9 ], [] ],
[ [], [], [], [], [] ],
[ [], [], [], [], [] ],
[ [], [], [], [], [] ]
]
它是你需要的吗?
您的代码中发生的事情是,您在第三个循环中将所有内容添加到第二个循环中的每一列。它们都是 9 的原因是因为您通过使用赋值而不是将其添加到数组来覆盖每一列:
// 3rd loop
array[0][0][0] = 1 // 1st iteration [[[1],...]]
array[0][0][1] = 2 // 2nd iteration [[[2],...]]
这是一个使用 2 个循环并压入 sub-arrays 并从测试数组转移的示例。
const test = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const create2dArray = (row, column) => {
let result = [];
for (let r = 0; r < row; r++) {
result.push([]);
for (let c = 0; c < column; c++) {
let data = test.length < 1 ? [] : [test.shift()]
result[r].push(data);
}
}
return result;
}
let row = 5, col = 5;
let ground = create2dArray(row, col);
console.log(JSON.stringify(ground));