The test case I don’t understand is that:
updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me");
for “5439”, I expected to get
'5439': { albumTitle: 'ABBA Gold', tracks: [ 'Take a Chance on Me' ] }
and I got it.
When I tried solution 2, for ‘5439’, I got
'5439':
{ albumTitle: 'ABBA Gold',
tracks: [ 'Take a Chance on Me', 'Take a Chance on Me' ] }.
I’m confused, why this is expected ?
// 设置
const recordCollection = {
2548: {
albumTitle: 'Slippery When Wet',
artist: 'Bon Jovi',
tracks: ['Let It Rock', 'You Give Love a Bad Name']
},
2468: {
albumTitle: '1999',
artist: 'Prince',
tracks: ['1999', 'Little Red Corvette']
},
1245: {
artist: 'Robert Palmer',
tracks: []
},
5439: {
albumTitle: 'ABBA Gold'
}
};
// 只修改这一行下面的代码
function updateRecords(records, id, prop, value) {
let record = records[id];
if (prop !== 'tracks' && value !== '') {
record = {
...record,
[prop]: value,
}
} else if (prop === 'tracks' && !Object.keys(record).includes('tracks')) {
let tracks = [];
tracks.push(value)
record = {
...record,
tracks,
}
// console.log('record', record);
} else if (prop === 'tracks' && value !== '') {
record = {
...record,
tracks: [...record.tracks, value],
};
} else if (value === '') {
delete record[prop];
}
records = { ...records, [id]: record };
return records;
}
updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me");
Challenge: Basic JavaScript - Record Collection
Link to the challenge: