let dates = {
'2018/07/25': [['r','red'], ['b','blue']],
'2018/07/26': [['a','apple'], ['o','orange']],
'2018/08/01': [['d','deer'], ['l','lion']]
}
期待されるnewObjectは次のとおりです。
newObject = {
'2018/07':{
'2018/07/25': [['r','red'], ['b','blue']],
'2018/07/26': [['a','apple'], ['o','orange']]
},
'2018/08':{
'2018/08/01': [['d','deer'], ['l','lion']]
}
これまでの私のコード:
let newObject = {};
Object.keys(dates).forEach((onedate, index) => {
let monthdate = onedate.slice(0,7)
newObject[monthdate] = {[onedate] : [...dates[onedate]]};
});
上記のコードの出力:
newObject = {
'2018/07':{
'2018/07/26': [['a','apple'], ['o','orange']]
},
'2018/08':{
'2018/08/01': [['d','deer'], ['l','lion']]
}
最終日は、同じループ内の上位オブジェクトを上書きします
この操作を単一のループ関数で実行することは可能ですか?セットを使用する必要がありますか?
この問題を解決する方法はいくつかありますが、中にはを含めることもできSet
ます。
ただし、コードを開始点として使用すると、答えは非常に簡単です。コードがnewObject[monthdate]
既に存在する場合は上書きしないでください。
let newObject = {};
Object.keys(dates).forEach((onedate, index) => {
let monthdate = onedate.slice(0,7)
if (!newObject[monthdate]) {
newObject[monthdate] = {};
}
newObject[monthdate][onedate] = [...dates[onedate]];
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加