[英]Javascript conditionally adding the nested object using map() operator
我有下面的 JSON,
var original = {
"todos": [
{
"accountNo": "50190000",
"name": "Sarkar",
"vpainfo": [
{
"vpa": "log@bda",
"mccCode": "0000"
}
]
}
]
}
並試圖在嵌套數組內添加新數據,即“vpainfo”。 我嘗試使用以下代碼並能夠在“vpainfo”中添加新值。
var newdata = {"vpa":"first@bda","mccCode":"1111"};
var newObj =
Object.assign({}, original,
{
todos: original.todos.map(todoInfo=>(todoInfo.accountNo=="50190000")?[
...todoInfo.vpainfo,
newdata
]: todoInfo)
});
結果 object 是,
{"todos":[[{"vpa":"log@bda","mccCode":"0000"},{"vpa":"first@bda","mccCode":"1111"}]]}
但是很少有鍵和值(accountNo 和 name)被遺漏,我們如何獲得具有最新更新值的完整 object?
您只返回數組,而不是實際的 object,因此會出現錯誤。
var original = { "todos": [ { "accountNo": "50190000", "name": "Sarkar", "vpainfo": [ { "vpa": "log@bda", "mccCode": "0000" } ] } ] } const newdata = {"vpa":"first@bda","mccCode":"1111"}; const newObj = Object.assign({}, original, { todos: original.todos.map(todoInfo=>{ if(todoInfo.accountNo=="50190000"){ return {...todoInfo, vpainfo: [...todoInfo.vpainfo, newdata] } } return todoInfo }) }); console.log(newObj)
所有那些傳播運營商似乎有點過分......
如果您想做的只是將新數據newdata
到現有數組,那么請執行以下操作:
var original = { "todos": [{ "accountNo": "50190000", "name": "Sarkar", "vpainfo": [{ "vpa": "log@bda", "mccCode": "0000" }] }] }; const newdata = { "vpa": "first@bda", "mccCode": "1111" }; // Find the correct account. const account = original.todos.filter(t => t.accountNo === '50190000')[0]; if (account) { account.vpainfo.push(newdata); } console.log(original);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.