javascript:在循环中使用if语句时,在数组中分配数组的索引时出现问题
给定str=GC,我需要输出: [G',C'],[C',G']] 下面的代码似乎运行了第一个if语句,为G创建第一个条目: [[G C]] 但是当运行elseif的第二次迭代C将两者转换为 [C',G',[C',G']] 我不明白,我在第一个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
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在循环中创建时,您正在创建新对象。