好吧,我有一個記錄集對象:唔明此更新功能的流動
var collection = {
"2548": {
"album": "Slippery When Wet",
"artist": "Bon Jovi",
"tracks": [
"Let It Rock",
"You Give Love a Bad Name"
]
},
"2468": {
"album": "1999",
"artist": "Prince",
"tracks": [
"1999",
"Little Red Corvette"
]
},
"1245": {
"artist": "Robert Palmer",
"tracks": [ ]
},
"5439": {
"album": "ABBA Gold"
}
};
的代碼更新,與下面的下面的函數:
function updateRecords(id, prop, value){
if (prop === "tracks" && value !== "") {
if(collection[id][prop]) {
collection[id][prop].push(value);
}
else {
collection[id][prop]=[value];
}
} else if (value !== "") {
collection[id][prop] = value;
} else {
delete collection[id][prop];
}
return collection;
}
我期待了解上述代碼片段的功能。我讀了它,就像這樣:
if (prop === "tracks" && value !== "") {
if(collection[id][prop]) {
collection[id][prop].push(value);
}
如果「託」等於軌道和值不爲空,繼續到功能的更新部分。下一部分,我不確定,似乎說'如果集合的ID和道具有價值,把所述ID和道具推入集合。
接下來的部分,我肯定就有點迷失:
else {
collection[id][prop]=[value];
}
與上面開始,我還不清楚,如果這個else語句的目的是隻覈實信息是否已經包含在陣列。
else if (value !== "") {
collection[id][prop] = value;
} else {
delete collection[id][prop];
}
最後,上面似乎測試只是值是空白的,如果不是,它會插入所述值到數組中。如果所有條件都失敗,則id和prop不會添加到數組中。我覺得我沒有辦法解決這個問題,但是如果有人能夠幫助澄清一些混淆,那將不勝感激。
這很有道理,只是一個簡單的問題。代碼中的[id] [prop] = value部分,這些部分是將測試應用到陣列的各個層次上嗎?例如,ID = 2468,道具=「專輯」,「藝術家」,「曲目」,價值是我們正在申請的所有權? @webdeb – AnabolicHippo
是的,但是當[[id] [「tracks」]是一個數組時,你應該做'[id] [「tracks」]。push(value) – webdeb