前提・実現したいこと
バグなのか仕様なのか分からないまま、ずっと悩んでいます。
以下のコードを実行するとなぜか変数を共有されてしまいます。
本来ならb
のデータのy
だけを全て削除するつもりが、共有されてa
のデータy
も全て削除されてしまいます。
変数共有の原因と解決策を教えてください。よろしくお願いします。
発生している問題・エラーメッセージ
a: { a: { x: 0, z: 2 }, b: { x: 2, z: 8 }, c: { x: 3, z: 1 } } b: { a: { x: 0, z: 2 }, b: { x: 2, z: 8 }, c: { x: 3, z: 1 } }
b
のデータのy
だけでなく、a
のデータy
も削除される。
該当のソースコード
js
1// 適当なデータ 2let a = { 3 "a": { 4 "x": 0, 5 "y": 1, 6 "z": 2 7 }, 8 "b": { 9 "x": 2, 10 "y": 4, 11 "z": 8 12 }, 13 "c": { 14 "x": 3, 15 "y": 6, 16 "z": 1 17 } 18}; 19 20// コピー 21let b = Object.assign({}, a); 22 23// コピーされたデータの「y」を全消去 24for (let id in b) { 25 delete b[id].y; 26} 27 28// 結果 29console.log("a:", a); 30console.log("b:", b);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/01 02:46
2020/08/01 02:50 編集
2020/08/01 03:04