2017-09-27 82 views
1

我有一個數據:如何將更改保存在深層嵌套對象中?

reservations = { 
"2016":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 111"}}, 
"2017":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 222"}} 
} 

我需要改變一些notes_backend,然後發送更新reservations到API。

這裏是我的代碼:

var reservations_obj = JSON.parse(reservations), 
    raw_id = 'A36822'; 

for (var year in reservations_obj){ 
    if (raw_id in reservations_obj[year]){ 
     reservations_obj[year][raw_id]["notes_backend"] = "UPDATED NOTES"; 
     console.log('new_data:', reservations_obj[year][raw_id]); // new_data: {datetime: "6/22/17 at 11:00AM", visitors: "11 guests", notes_backend: "UPDATED NOTES"} 
     console.log(JSON.stringify(reservations_obj)); // no changes 
     break; 
    } 
} 

... send updated reservations_obj to API 

第一console.log顯示reservations_obj[year][raw_id]改變,但第二console.log顯示我最初reservations_obj沒有任何更新。

上面的代碼是基於Python的邏輯,但如何在JavaScript中實現它?

+1

請問您能解釋究竟是什麼問題,因爲您的代碼已經是javascript實現了。 –

+0

請注意代碼中的註釋。第一個'console.log'顯示'reservations_obj [year] [raw_id]'被更改,但第二個'console.log'顯示我沒有任何更新的最初'reservations_obj'。 – TitanFighter

+4

如果我刪除由於語言的「開始評論」使用錯誤符號而導致的語法錯誤,它看起來工作正常。有什麼問題? (投票關閉由於錯字引起的題外話題) – Quentin

回答

0

你只有很少的語法錯誤。首先JSON的必須是一個字符串:

var reservations = `{ 
"2016":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 111"}}, 
"2017":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 222"}} 
}` 

這裏幾乎相同的代碼工作plunker。 (打開控制檯)

1

你的代碼工作得很好..但要記住預留變量已經包含PARSED json。

var reservations = { 
"2016":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 111"}}, 
"2017":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 222"}} 
} 

// var reservations_obj = JSON.parse(reservations),  // reservations is already PARSED! 
var reservations_obj = reservations, 
    raw_id = 'A36822'; 

for (var year in reservations_obj){ 
    if (raw_id in reservations_obj[year]){ 
     reservations_obj[year][raw_id]["notes_backend"] = "UPDATED NOTES!!!!!!!!!!!!!!!!!"; 
     console.log(JSON.stringify(reservations_obj)); 
     break; 
    } 
} 
相關問題