Tell me, please, what's the problem?
You need to write a function that will complement / modify the 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 updateRecords(id, prop, value) { if(value!==""){ if(prop=="tracks"){ if(!collection.id.hasOwnProperty(prop)){ collection.id.prop = []; } collection.id.prop.push(value); } else{ collection.id.prop = value; } } else{ delete collection.id.prop; } return collection; } // Alter values below to test your code updateRecords(5439, "artist", "ABBA"); 

    1 answer 1

    So I would not think of making a copy of the object :)
    For example, it's easier:

     let copy = Object.assign(collection); 

    You use dot access, which is equivalent to calling a property by that name.
    If the name is string / variable / key-with-non-valid characters, use the bracket notation:

     let prop = 'data'; alert(someObject[prop]); // Будет равносильно someObject.data 

    If prop were equal to tracks , the error would have crashed to collection.id.hasOwnProperty(prop) for the same reason, but with a different error.


    Better this way:

     // Setup let 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)); let collectionCopy = Object.assign(collection); // Only change code below this line function updateRecords(id, prop, value){ if(value !== ""){ if(prop === "tracks"){ if(!collection[id].hasOwnProperty(prop)){ collection[id][prop] = []; } collection[id][prop].push(value); }else{ collection[id][prop] = value; } }else{ delete collection[id][prop]; } return collection; } // Alter values below to test your code console.info(updateRecords(5439, "artist", "ABBA")); // Знаю что это битлы, но зато добавление в tracks проверено и работает console.info(updateRecords(5439, "tracks", "All you need is love"));