我正在网上搜索很长时间。但是没用。请帮助或尝试给出一些想法来实现这一目标。
var collection = {
1245: {
artist: "Robert Palmer",
tracks: [ ]
},
5439: {
album: "ABBA Gold"
}
};
var collectionCopy = JSON.parse(JSON.stringify(collection));
function update(id, prop, value) {
if (value !== '' && prop == 'tracks') {
collectionCopy[id][prop].push(value);
return collectionCopy;
}
update(1245, "tracks", "Addicted to Love");
它说collectionCopy [id] [prop] .push(value)不是一个函数,我不知道为什么,但是collectionCopy [id] [prop]实际上是一个数组。 感谢您的帮助!
答案 0 :(得分:1)
您在update()的if语句中缺少}。修复下面的代码就可以了:
var collection = {
1245: {
artist: "Robert Palmer",
tracks: [ ]
},
5439: {
album: "ABBA Gold"
}
};
var collectionCopy = JSON.parse(JSON.stringify(collection));
function update(id, prop, value) {
if (value !== '' && prop == 'tracks') {
collectionCopy[id][prop].push(value);
}
return collectionCopy;
}
update(1245, "tracks", "Addicted to Love");
输出:
{ 1245: { artist: 'Robert Palmer', tracks: [ 'Addicted to Love' ] },
5439: { album: 'ABBA Gold' } }
答案 1 :(得分:0)
您的if语句未正确关闭。尝试使用通常可以为您执行此操作的IDE来更整洁地构造代码。代码应如下:
var collection = {
1245: {
artist: "Robert Palmer",
tracks: []
},
5439: {
album: "ABBA Gold"
}
};
var collectionCopy = JSON.parse(JSON.stringify(collection));
function update(id, prop, value) {
if (value !== '' && prop == 'tracks') {
collectionCopy[id][prop].push(value);
return collectionCopy;
}
}
update(1245, "tracks", "Addicted to Love");
console.log(collection);