実現したいこと
JavaScript で自動生成されたオブジェクトに対して、Keyを変更したいと考えています。
js
1let objTable = {}; 2let arrTable = []; 3for(let j = 1; j <= 3; j++ ){ 4 arrTable.push('-'); 5 objTable[j] = arrTable; 6 7} 8/* 9{ '1': [ '-', '-', '-' ], 10 '2': [ '-', '-', '-' ], 11 '3': [ '-', '-', '-' ] } 12*/ 13}
こんなふうに生成されたオブジェクトに対して、1のkeyの配列の一部分を変更したいと思い、spliceを使用しました。
1の配列の0をWに変更したいと思いました。
js
1objTable[1].splice(0,1,'W') 2 3/* 4{ '1': [ 'W', '-', '-' ], 5 '2': [ 'W', '-', '-' ], 6 '3': [ 'W', '-', '-' ] } 7*/ 8
ただこうするとすべての配列が変更されてしまいました。
js
1let obj = 2{ '1': [ '-', '-', '-' ], 3 '2': [ '-', '-', '-' ], 4 '3': [ '-', '-', '-' ] } 5obj[1].splice(0,1,'W') 6console.log(obj) 7 8/* 9{ '1': [ 'W', '-', '-' ], 10 '2': [ '-', '-', '-' ], 11 '3': [ '-', '-', '-' ] } 12*/ 13
変数にオブジェクトを直接入れるとうまくいきます。
この違いってなぜなのかがわからず、質問いたしました。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/24 15:27