Actualización de discos - UpdateRecords - Js

Cuéntanos qué está pasando:
Describe tu problema en detalle aquí.

Buenas gente, estoy resolviendo el ejercicio de actualizar discos y lo que pasa es que me marcan errores en las condiciones(les adjunto la imagen de lo dos principales), segun yo estaba haciendo las pruebas con console.log mas abajo y como pueden ver actualiza de manera correcta los discos y no me explico porque me marcan error, si alguien tiene un mejor ojo que me ayude en ver que es lo que tengo mal en mi funcion updateRecords() que no me deja completar las condiciones

  **Tu código hasta el momento**

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

// Cambia solo el código debajo de esta línea
function updateRecords(records, id, prop, value) {
if(value === ""){
   delete records[id][prop];
  
}else if(prop == "tracks"){
    /*if(records[id].hasOwnProperty(prop)){
      records[id][prop].push(value);
    }else{
      records[id][prop] = [];
      records[id][prop].push(value);
    }*/
    records[id][prop] = records[prop] || [];
    records[id][prop].push(value)
    
}else{
    records[id][prop] = value;
}
return records[id];
}

console.log(updateRecords(recordCollection, 5439, 'artist', 'ABBA'));
console.log("
")

console.log(updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me"));
console.log("
")


/*
console.log(updateRecords(recordCollection, 1245, "tracks", "Addicted to Love"));
console.log("
")

console.log(updateRecords(recordCollection, 1245, "albumTitle", "Riptide"));*/
  **Información de tu navegador:**

El agente de usuario es: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36

Desafío: Colección de discos

Enlaza al desafío:

Hola como estás?
En primer lugar fijate que no te pide que devuelvas el objeto del id en sí mismo, si no que devuelvas todo el objeto, es decir el argumento records simplemente.
Te va a quedar un solo error. No intenté solucionarlo pero creo que estás utilizando mal los if y else, creo que se pueden dar combinaciones que no estas especificando

Bien bro, lo que pasa que el return lo tengo asi para verificar que todo este correcto por medio del console.log(), el foro no me dejaba subir mas de dos imágenes asi que aca te paso la otra para que veas que las condiciones que pide si se estan completando correctamente y que segun yo todo esta bien

Si si entiendo, es que para pasar las pruebas necesariamente debe retornar lo que te pide.
Podes usar un console.log( records[id] ) dentro de la función si queres para ir viendo, pero la prueba te exige que el codigo sea: return records;

Esto se debe a que la palabra reservada return es muy importante, porque es lo que va a devolver la función, y eso es lo que las pruebas tienen en cuenta, y si la función debe devolver el objeto entero entonces no puede devolver sólo una parte

1 Like

pero en las condiciones no me pide que devuelva el objeto :/, te puedo pasar el enunciado si gustas

Sisi lo pide, es la primer petición:

  • Tu función siempre debe devolver el objeto de colección de registros completo.
1 Like

Puede que sea un poco confuso pero si lo lees bien te dice que devuelva la colección, y eso se refiere a todos los albums.
Pero igual te va a seguir saltando un error, pero va a ser uno solo

sisi justo estaba escribiendo me salta uno mas, este justamentefreeCode4

ya pude completar la mayoria de condiciones

Claro borrá todas las llamadas a la función y todos los console log, despues agregá una sola llamada a la función pero sin console log:

updateRecords(recordCollection, 2468, "tracks", "Free")

Depues, arriba de return agregá console.log( records[id] )
Entonces ahí vas a ver el objeto en la consola

ya esta pero me sigue dando error con la condicion esta

si si claro sigue dando error porque sólo estamos probando el código, pero ahora vemos el objeto en la consola y nos pide que en “tracks” tenga la cadena “1999” al comienzo y no la tiene, sólo tiene tracks: ['Free']. Ahora hay que ver donde está el error

freeCode4
Este es el objeto sin embargo “1999” ya esta al principio :confused:

Es que tiene que estar al principio despues de haber pasado ese objeto por la función. Es decir, tiene que estar al principio visto desde nuestro console.log(records[id]) porque esa va a ser una parte de lo que nos va a retornar la función.
El error está en esta línea records[id][prop] = records[prop] || [ ]; que quisiste expresar con esa línea de código?

A lo mejor te estoy confundiendo más, de última te grabo un video y te lo paso

estaba verificando si la propiedad(prop) existia y si no se le asignaba un array vacio, lo estaba haciendo junto con el video de youtube que han subido de esta plataforma asi lo enseñaban

Instead of copying the video, can you think of a different way to accomplish this? I think the compact syntax there is confusing you a little bit.

If record[id] does not have the "tracks" property, then you should set the "tracks" property equal to an empty array. How would you write that?

Note: It is easier to help when you post your code instead of pictures of code.

Ahh okok, lo hice de otra forma yo, ahí está respondiendo alguien más

ya lo termine broxd, yo tenia otro code de otra forma pero en el video de youtube recomendadan esa y por eso me daba inseguridad asi que probe este y ya me soluciono el problema

Please post your actual code instead of just a picture of your code.

Good job getting the code to work! It is totally ok to make it work in a different way than some youtube video. It is more important to have working code than you understand. It isn’t very important to be able to copy somebody else’s code you don’t understand as well.