我正在尝试制作一个小脚本来遍历数组“CA”,并为每个元素创建几个新数组,这些数组采用“CA”的环绕部分,所有数组都以该元素为中心。这是代码:
var max = 10,
thisVar = {}
CA = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
for (j = 0; j < 5; j++) {
for (i = 0; i < max; i++) {
thisVar["groupS" + j + "C" + i] = [CA[i]]
for (a = 1; a <= j; a++) {
if ((i - a) < 0) {
thisVar["groupS" + j + "C" + i].unshift(CA.reverse()[-(((i + 1) - a) % max)])
} else {
thisVar["groupS" + j + "C" + i].unshift(CA[(i - a)])
}
thisVar["groupS" + j + "C" + i].push(CA[((i + a) % max)])
}
}
}
console.log(thisVar.groupS1C0);
这会返回 ['j', 'a', 'i'],但我期待的是 ['j', 'a', 'b']。看来问题是 .push() 但在这种情况下变量 'a' 肯定是 1?
最佳答案
我希望这就是您正在寻找的。只需反向 CA 并推送它。您将得到预期的输出 ['j', 'a', 'b']。
max = 10
CA = ['a','b','c','d','e','f','g','h','i','j']
for (j=0; j<5; j++){
for (i=0; i<max; i++) {
this["groupS" + j + "C" + i] = [CA[i]]
for (a=1; a<=j; a++) {
if ((i-a) < 0) {
this["groupS" + j + "C" + i].unshift(CA.reverse()[-(((i+1) - a) % max)])
}
else {
this["groupS" + j + "C" + i].unshift(CA[(i-a)])
}
this["groupS" + j + "C" + i].push(CA.reverse()[((i+a) % max)])
}
}
}
console.log(groupS1C0)
关于javascript - 制作数组组时使用 .push() 遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742501/