鍍金池/ 問答/HTML/ javascript多層json數(shù)據(jù)添加問題

javascript多層json數(shù)據(jù)添加問題

javascript多層json數(shù)據(jù)添加為什么不行

clipboard.png

clipboard.png

clipboard.png

clipboard.png

for (var i in itemdata.content){
                    if(itemdata.content[i].guid == id){
                        
                        if(itemdata.content[i].value[key].is_array=="true"){
                            var aabbcc = ['','','']

                            itemdata.content[i].value[key].value[itemdata.content[i].value[key].value.length] = aabbcc;
                            itemdata.content[i].value[key].index[itemdata.content[i].value[key].index.length]='11';
                            
                            console.log(itemdata.content[i].value[key].value,'22222222222')
                            continue;

                        }else if(itemdata.content[i].value[key].is_array=="false"){
                            itemdata.content[i].value[key].value.push(["","",""]);
                            itemdata.content[i].value[key].index.push("");
                            itemdata.content[i].value[key].is_array = "true";
                            continue
                            
                        }
                        
                    }
                }

為什么這樣添加不行呢 用數(shù)組的方法push 和 直接對象的 = 都不行 但打印出最里層數(shù)據(jù)是顯示已經(jīng)添加到第三個 但打印出最外層數(shù)據(jù) 卻顯示 還是第二 添加失敗

回答
編輯回答
陌南塵

問問題要有注意問明的明確性和信息對稱性。

明確性是指表明你在什么情況下遇到了什么什么問題,需要得到什么樣的幫助,你期望的過程或者結果是怎么樣的,而實際的過程和結果又是怎么樣的

信息對稱性是指……你在問問題的時候要清楚回答問題的人所了解的信息與你所了解的信息并不相同,比如,你在做什么,目的是什么,這些與問題直接相關的信息都應該描述出來。


現(xiàn)在來說說你的問題……說實在的,我并不知道你想干什么,也不知道 .is_array === "false" 的時候相關的數(shù)據(jù)是什么樣子,甚至到底是 .is_array === "false" 還是根本就沒有 .is_array 這個屬性存在。

代碼中大量使用了連續(xù)引用屬性這種語法,比如 itemdata.content[i].value[key].value[...],這在閱讀代碼的時候很難理清關系,可以考慮適當?shù)奶砑右恍┲虚g變量。像 array[array.length] = xxx 這種語法雖然沒有錯誤,但在多層引用的情況下,直接使用 .push() 會讓代碼更簡潔易懂(當然最好還是加中間變量)

從提供的信息來看, if 分支似乎沒有問題,問題出在 else 分支上,但是題中并沒有提到 else 分支上的相關信息(除了代碼),但純從代碼分析,首先得保證 itemdata.content[i].value[key].value 是個數(shù)組,才能用 .push(),如果它都不是一個數(shù)組,而是 null、undefined 甚至是一個對象,那 .push 多半是要報錯的。從邏輯上來說,既然它本身不是數(shù)組或沒有數(shù)據(jù),是可以用 =[ ["", "", ""] ] 來代替 .push(["", "", ""])

2018年5月2日 22:22