[英]Javascript - How to push an array to a multidimensional array
我试图将生成的数组推送到多维数组,由于某种原因,数组值中所有其他位置的值都与我刚推送的值相同。
例如:我
var grades = [];
for(var i = 0; i < num_qes + 1; i++){
var grade = [0, 0, 0, 0];
grade[0] = i;
for(var n = 0; n < num_qes+ 1; n++){
grade[1] = n;
for(var f = 0; f < num_qes+ 1; f++){
grade[2] = f;
for(var t = 0; t < num_qes+ 1; t++){
grade[3] = t;
allGrad = grade[0] + grade[1] + grade[2] + grade[3];
//println(allGrad);
if(allGrad === num_qes){
grades.push(grade);
}
}
}
}
最后,我在这里检查是否我生成的数组中的所有值都完全等于问题数。
if(allGrad === num_qes){
grades.push(grade);
}
假设grade = [9, 1, 0, 0]
,当我将此值推送到多维数组grades时,所有值都更改为[9, 1, 0, 0]
。 因此,多维数组应如下所示: [[9, 1, 0, 0], [9, 1, 0, 0], [9, 1, 0, 0]]
9,1,0,0 [[9, 1, 0, 0], [9, 1, 0, 0], [9, 1, 0, 0]]
,应如下所示: [[9, 0, 0, 1], [9, 0, 1, 0], [9, 1, 0, 0]]
。
我希望我的发言有道理,并在此先感谢您的通知。
jsfiddle就在这里
这是你所追求的吗?
var grades = [];
var num_qes = 4;
for(var i = 0; i <= num_qes; i++){
for(var n = 0; n <= num_qes; n++){
for(var f = 0; f <= num_qes; f++){
for(var t = 0; t <= num_qes; t++){
var sum = i + n + f + t;
if(sum === num_qes){
console.log(i + ',' + n + ',' + f + ',' + t);
var grade = [i, n, f, t];
grades.push(grade);
}
}
}
}
}
笔记:
i <= num_ques
用i <= num_ques
替换了i < num_qes + 1
控制台中的结果如下所示:
0,0,0,4
0,0,1,3
0,0,2,2
0,0,3,1
0,0,4,0
0,1,0,3
0,1,1,2
0,1,2,1
0,1,3,0
etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.