制作数组组时.push()的困难

时间:2018-12-12 11:55:59

标签: javascript arrays

我正在尝试制作一个通过数组'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吗?

1 个答案:

答案 0 :(得分: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)