FreeCodeCamp JSON 代码不起作用
FreeCodeCamp JSON code isn't working
>说明:
编写一个函数,它接受一个id,一个属性(prop)和一个值。 对于集合中的给定 id:如果值为非空(值 !== ") 并且 prop 不是"轨道",然后更新或设置道具的值。如果 道具是"轨道",值是非空的,将值推到 轨道数组的末尾。如果值为空,则删除该道具。总是 返回整个集合对象。
有效的代码:
function update(id, prop, value) {
if (prop === "tracks" && value !== "") {
collection[id][prop].push(value);
} else if (value !== "") {
collection[id][prop] = value;
} else {
delete collection[id][prop];
}
return collection;
}
我的代码,这不起作用:
function update(id, prop, value) {
if (value !== "" && prop !== "tracks") {
collection[id][prop] = value;
} else if (value !== "" && prop === "tracks") {
collection[id][prop].push(value);
} else if(value === "") {
delete collection[id][prop];
} else {
return collection;
}
}
整个代码:
// 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 update(id, prop, value) {
if (prop === "tracks" && value !== "") {
collection[id][prop].push(value);
} else if (value !== ""){
collection[id][prop] = value;
} else {
delete collection[id][prop];
}
return collection;
}
// Alter values below to test your code
update(5439, "artist", "ABBA");
我按照所有说明进行操作。但是为什么我的代码不起作用?为什么另一个在工作?
说明是这样说的:
始终返回整个集合对象。
然而,只有当其他语句都不成立时,你才会返回它......这绝不是!
所以,你需要改变...
function update(id, prop, value) {
if (value !== "" && prop !== "tracks") {
collection[id][prop] = value;
} else if (value !== "" && prop === "tracks") {
collection[id][prop].push(value);
} else if(value === "") {
delete collection[id][prop];
} else {
return collection;
}
}
。到。。。
function update(id, prop, value) {
if (value !== "" && prop !== "tracks") {
collection[id][prop] = value;
} else if (value !== "" && prop === "tracks") {
collection[id][prop].push(value);
} else if(value === "") {
delete collection[id][prop];
}
return collection;
}
<小时 />注意
达到完全相同效果的更好方法是这样做:
function update(id, prop, value) {
if (value === "") {
delete collection[id][prop];
} else if (prop === "tracks") {
collection[id][prop].push(value);
} else {
collection[id][prop] = value;
}
return collection;
}
我有同样的问题,我创建了一个带有空数组的属性,然后使用 .push() 附加值。瞧。这是我下面的代码:
function updateRecords(id, prop, value) {
if (prop !== "tracks" && value !== "") {
collection[id][prop] = value;
} else if (prop === "tracks" && value !== "") {
if(!collection[id].hasOwnProperty(prop)) {
collection[id][prop] = []; //Create a property with empty array
collection[id][prop].push(value); //Append a value into the array
} else {
collection[id][prop].push(value); //Append a value into the exist property array
}
} else if (value === "") {
delete collection[id][prop];
}
return collection;
}
相关文章:
- 面向对象的Javascript代码在IE7中不起作用
- 为什么indexOf在这个js代码中不起作用
- d3js文本传输-示例代码不起作用
- 滚动动画代码不起作用
- 为什么此验证代码不起作用
- KeyPress和Keydown在这个特定的代码上不起作用.只有key-up起作用
- 我的jquery代码不起作用.为什么?
- 调试此代码?警报不起作用
- I'我不知道为什么我的代码没有'不起作用
- jquery中的PHP代码不起作用
- 谷歌地图代码不起作用
- PHP代码中实现的JavaScript |if语句不起作用
- 为什么这个代码不起作用?我花了很长时间试图弄清楚这一点
- Javascript ajax代码在ibm worklight中不起作用
- 这段jquery代码在angular指令中不起作用
- JavaScript在我下面的代码中不起作用
- JS代码使IE9和Safari冻结,在Opera中不起作用
- 复选框检查器在表中不起作用.代码在没有表标记的情况下工作
- JavaScript 按钮不起作用;代码与其他工作按钮相同
- 视频.js在 Safari 中不起作用(代码:4 MEDIA_ERR_SRC_NOT_SUPPORTED)