Tracks property isn't being set

I am not sure what is going on, but I think the second else if statement is where the mistake is. What do you think it is?

  **Your code so far**

// 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" && value != "" && records[id].hasOwnProperty(prop) == false) {
  records[id][prop] = [].push(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');

Challenge: Record Collection

Link to the challenge:

push is not returning what you think it is.

console.log([].push(42))
// 1

I didn’t know that, thanks a lot. I have another question if you let me: is push considered a method?

Yes, if you see a dot . in front of the function name it’s a method.

That is, it’s a function on an object property, or in this case on the prototype property Array.prototype.push()

Summary
class User {
  constructor(name) {
    this.name = name;
  }
  getName() {
    return this.name;
  }
}

const user = new User('John')
console.log(user.getName()); // John

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.