Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:在循环中使用if语句时,在数组中分配数组的索引时出现问题_Javascript - Fatal编程技术网

javascript:在循环中使用if语句时,在数组中分配数组的索引时出现问题

javascript:在循环中使用if语句时,在数组中分配数组的索引时出现问题,javascript,Javascript,给定str=GC,我需要输出: [G',C'],[C',G']] 下面的代码似乎运行了第一个if语句,为G创建第一个条目: [[G C]] 但是当运行elseif的第二次迭代C将两者转换为 [C',G',[C',G']] 我不明白,我在第一个if语句中指定的值被覆盖了,我不明白为什么 function pairElement(str) { let a = [] let b = [] for (let i=0; i<str.length;i++) { a[i]=b

给定str=GC,我需要输出: [G',C'],[C',G']] 下面的代码似乎运行了第一个if语句,为G创建第一个条目: [[G C]] 但是当运行elseif的第二次迭代C将两者转换为 [C',G',[C',G']]

我不明白,我在第一个if语句中指定的值被覆盖了,我不明白为什么

function pairElement(str) {
  let a = []
  let b = []

  for (let i=0; i<str.length;i++) {
    a[i]=b
    if (str[i]=="G") {
      console.log("case 1")
      a[i][0]="G"
      a[i][1]="C"
      console.log(a)
    }
    else if (str[i]=="C") {
      console.log("case 2")
      a[i][0]="C"
      a[i][1]="G"
      console.log(a)
    }
  }

  return a;
}

console.log(pairElement("GC")); //desired output: [ [ 'G', 'C' ], [ 'C', 'G' ] ]
在循环之前创建b值,这就是问题的症结所在: 只要在循环中创建它,您就会得到您想要的结果

函数pairementstr{ 设a=[]
对于let i=0;这是什么?我正在查看它,但我没有看到“b”被分配给for循环中的一个新值…那么为什么它要把它放在修复东西的内部…?我仍然缺少一些东西。好的,我看到它在for循环中更新b。它在哪里做这些…?当你在循环外创建b时,你基本上是在重新评估它的值在第一次迭代中,i=0->b=['G','C'],但在第二次迭代中,i=1 yoy将其重新分配给b=['C','G']哦,我现在看到了nvm…因为它是一个数组,a[i]=b也在更新原始b,因为它引用了相同的数据。是的,当b在循环中创建时,您正在创建新对象。