Help with the "Record Collection" exercise and .hasOwnProperty() method

hello guys
im on the “record collection” exercise and i did this:

// Setup
var 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'
  }
};

// Only change code below this line
function updateRecords(records, id, prop, value) {
  if (prop !== "tracks" && value!==""){
    records[id][prop]=value;
  } else if (prop === "tracks"&& records[id][prop]===undefined){
 records[id][prop]=[value];
  } else if (prop === "tracks" && value!==""){
records[id][prop].push(value);
  } else if (value===""){
     delete records[id][prop];
   }
  return records;
}
updateRecords(recordCollection, 5439, 'artist', 'ABBA');

why did it pass as correct? i checked the solutions on the guides
( freeCodeCamp Challenge Guide: Record Collection ) and none of the solutions were like mine. does this mean that the hasOwnProperty method wasn’t really necessary? if not, are there are situations in which it WOULD be necessary besides the ones where i would need it to check the existence of given properties?
thanks :heart::heart::heart:

I added spoiler tags since your code works. Good job getting it to work!

Checking if the property is undefined is the same thing as checking if hasOwnProperty() is false; its just a bit more idiomatic and reader friendly to use hasOwnProperty().

1 Like

Checking for a key is not the same as checking for a value. An object is a collection of key/value pairs.

A bit convoluted, but you get the point.

const obj = {
  name: 'John',
  age: undefined
}

console.log(obj.age); // undefined
console.log(obj.hasOwnProperty('age')); // true
1 Like

That’s true. I suppose I’m not used to seeing cases where someone would intentionally set a value to undefined, as I only define a property if I have real data to include.

1 Like

thank you for your help!!

i get what you mean, thank you!

That is why it’s a convoluted example.

It doesn’t have to be intentional that the value is undefined. Just because the value is undefined doesn’t mean the property doesn’t exist.

1 Like

Yeah, I suppose you could accidentally update the property with the contents of an uninitialized variable.