jsonの作成のためにfor文の中で[]の中にオブジェクトをpushをするコードを使っています、
複数箇所にfor文でのiを元に適切にオブジェクトを入れたいのですが何故かすべての箇所にオブジェクトが入ってしまう現象がありました。
原因の切り分けとして、試しにコードを
result[0].hoge.fuga[0].items.push(item);
のようにしても、result[1]、result[2]の中のhoge.fuga[0].itemsにも同様のオブジェクトが入ってしまいます。
どこで副作用が起きているのかわからず、困っている次第です。
reslutのアウトプットの形(雛形)は下記です。
[ { "hoge": { "name": "", "id": 1, "fuga": [ { "name": "aaaa", "items": [] }, { "name": "bbbb", "items": [] }, } } }, 以下同じ形でhogeが続く... ]
お力をお借りできたらと思います。よろしくおねがいします。
【追記しました】
resultの作成方法
let fuga = []; let result = []; /** * fugaの入れ物を作成 */ for (let i = 0; i < FUGA_CATEGORY.length; i++) { fuga.push({ name: FUGA_CATEGORY[i], items: [], }) } /** * hogeの入れ物を作成しfugaの入れ物を入れる */ for (let i = 0; i < HOGE.length; i++) { result.push({ hoge: { name: HOGE[i], id: i + 1, fuga: fuga }, }); }
for文
// fileはエクセルをjson化したもの for (key in file) { file[key].shift(); for (let i = 0; i < file[key].length; i++) { let item_hoge_id = file[key][i][COLUMN.hogeID]; let item_fuga_id = file[key][i][COLUMN.fugaID]; let item = { 省略 }; // result[0].hoge.fuga[0].items.push(item);でも複数箇所入る result[item_hoge_id - 1].hoge.fuga[item_fuga_id - 1].items.push(item); } }
回答1件
あなたの回答
tips
プレビュー