JavaScript básico - Colección de discos

Im trying to resolve this challenge, i need to know what is wrong with my code.
this orders i couldn’t complete:

  1. updateRecords(recordCollection, 5439, “tracks”, “Take a Chance on Me”).----> in this case the inspector said this line its wrong “records[id][“tracks”].push(value);”
  2. updateRecords(recordCollection, 1245, “tracks”, “Addicted to Love”).
  3. updateRecords(recordCollection, 2468, “tracks”, “Free”).

Tu código hasta el momento

// Configuración
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'
  }
};

// Cambia solo el código debajo de esta línea
function updateRecords(records, id, prop, value) {
  
  if(records[id] === undefined){
   records.id = {};
   records[id][prop] = value;
  } else {
    records[id][prop] = value;
  }
  

  if (value === ""){
    delete records[id][prop];
  } else if (prop !== "tracks" && value !== ""){
   records[id][prop] = value;
  } else if (prop === "tracks" && value !== ""){
    if (records[id]["tracks"] === undefined){
      records[id]["tracks"] = [];
      records[id]["tracks"].push(value);
    } else {
      records[id]["tracks"].push(value);
    }
  }

  
  return records;  
}

updateRecords(recordCollection, 5439, 'artist', 'ABBA');

Información de tu navegador:

El agente de usuario es: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36

Challenge: JavaScript básico - Colección de discos

Enlaza al desafío:

el error te lo está marcando en todos los test donde se usa “traks”

usando condole.log() para ver como modificas el diccionario
y usando el siguiente test updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me")


se debe de agregar “take a chance on me " al id 5439”

En la parte de abajo de la imagen puedes ver como se agrega la canción,la estas agregando como un string, pero “tracks” debe ser un array.

En esta parte de código estás convirtiendo “traks” a un string en lugar de un array

  if(records[id] === undefined){
   records.id = {};
   records[id][prop] = value;
  } else {
    records[id][prop] = value;
  }

Gracias por tu respuesta, esa parte del código(if(records[id] === undefined){
records.id = {};
records[id][prop] = value;
} else {
records[id][prop] = value;
}), lo que quiero hacer es ordenarle que si cuando va a chequear el album y encuentra que ese id no existe lo cree y que el mismo sea un array. por eso lo igualo a las llaves {}. Por otro lado, la orden “updateRecords(recordCollection, 5439, “tracks”, “Take a Chance on Me”)”, según la lógica que quise imprimir al código, debería ingresar en la parte:
else if (prop === “tracks” && value !== “”){
if (records[id][“tracks”] === undefined){
records[id][“tracks”] = ;
records[id][“tracks”].push(value);
} else {
records[id][“tracks”].push(value);
}
Si al momento de chequear el atributo tracks de un id determinado arrojara que es undefined, debería crearlo y agregar el valor (records[id][“tracks”] = ;
records[id][“tracks”].push(value);). Por otro lado, sino directamente aplicarle el valor con (records[id][“tracks”].push(value);). El problema es que cuando va a esa parte del codigo me dice “TypeError: records[id].tracks.push is not a function”

TypeError: records[id].tracks.push is not a function

marca este error porque push solo sirve para arrays y en tu codigo estas convirtiendo tracks a un string

usando este test: updateRecords(recordCollection, 2468, "tracks", "Free")

se debe añadir “Free” al array tracks que tiene el id 2468, ese array ya tiene datos por lo que solo es añadirlo al final, pero tu código elimina el array completamente.

puedes intentar hacer un if especifico para cuando utilized tracks

image

1 Like