javascript - 制作数组组时使用 .push() 遇到困难

标签 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?

最佳答案

我希望这就是您正在寻找的。只需反向 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/

相关文章:

c - 使用 C 中的指针实现一维字符数组(基本上是字符串)?

ios - 更改 tableView 中所有单元格的所有对象的 bool 状态

javascript - 当 React 尝试使用 load 注册在 window.onload 或 window.addEventListener 中运行的组件时,DOM 尚未加载

PHP 字段验证 - (2 个字符后跟 6 个数字)示例 : bp125489

javascript - 无法在ReactJS中显示JSX中的日期

javascript - 如何检查加载了哪个版本的 Ember.js?

javascript - Jquery 创建动画,交换 div 中的一系列图像

python - 如何在 python 中的换行符处拆分字符串?

java - 打印数组和 toString 时的输出问题

javascript - 使用 Array.prototype.map(callback, index) 在模板文字中索引 [data-attribute]?