答案 0 :(得分:1)
请注意,您使用的代码collection.id.prop.value
。这意味着它不会在点之后解析变量,因为a.b
is equivalent to a["b"]
。
这意味着您正试图在id
上访问名为collection
的礼仪,依此类推。
您应该使用collections[id][prop].value
。
var collectionCopy = JSON.parse(JSON.stringify(collection));
function updateRecords(id, prop, value) {
if (value !== "" && prop !== "tracks"){
return collection[id][prop].value;
} else if (value !== "" && prop === "tracks"){
return collection[id][prop].push(value);
} else {
delete collection[id][prop].value;
}
return collection;
}
答案 1 :(得分:0)
您应该使用点表示法来访问没有空格和括号表示法的元素。既然你不知道" prop"这里是否包含空格,最好只使用括号表示法。
如果您有任何问题,请与我们联系。
鉴于以下数据:
// Setup
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"
}
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function updateRecords(id, prop, value) {
if((value !== "") && (prop !== "tracks")) {
console.log("Updating or setting property: ", prop);
console.log("setting property to: ", value);
collection[id][prop] = value;
}
else if((value !== "") && (prop === "tracks")) {
collection[id].tracks.push(value);
}
else if(value === "") {
delete collection[id][prop];
}
return collection;
}
updateRecords(5439, "artist", "ABBA");