Lo corro en mi VS y todo correcto, pero acá ni siquiera ejecuta. Incluso copié el código del otro compañero a ver si el error era mío pero tampoco compila nada
Hola Daniel, parece que fue un error del momento en nuestros servidores. Vuelve a probar por favor yo copié y probé tú código, funciona 😉
Manejo de Clases
En este reto, se nos pide limitar la cantidad de bateristas de la banda, realizo comprobación del arreglo integrantes con el método some() para comprobar si contábamos o no con el baterista, mientras la variable baterista = false la banda no cuenta con el baterista así que quien llegue puede tocar con nosotros hasta que alguien no cumpla el condicional if (baterista === false) , porque tenemos ya al baterista.
Si primero agregas al baterista, ya no se podría agregar al guitarrista.
Manejo de Clases 2.0
En las bandas grupos y/o orquestas sinfónicas se distribuyen en el cual la percusión (Batería pertenece a la familia de la percusión) siempre estará posicionada de ultimo en general (ejecución, panfletos, etc), salvo la ocasión de que se presente como solistas algún percusionista o inclusive la fila entera. Pero basado en que sea este ultimo el caso agregamos else if (integranteNuevo.instrumento !== "Batería") para confirmar que no tocan en esta ocasión la batería.
Input
const data ={nombre:"Ensamble de Percusion Venezuela",generos:["Clasico","Afro-Caribeno","Latino","Llanero"],integrantes:[],}const banda =newBanda(data) banda.agregarIntegrante(newIntegrante({nombre:"Ricardo",instrumento:"Timpani"})) banda.agregarIntegrante(newIntegrante({nombre:"Denis",instrumento:"Xilofono"})) banda.agregarIntegrante(newIntegrante({nombre:"Maria",instrumento:"Vibraphone"})) banda.agregarIntegrante(newIntegrante({nombre:"Gilmer",instrumento:"Bateria"})) banda.agregarIntegrante(newIntegrante({nombre:"Jair",instrumento:"Maracas"})) banda.agregarIntegrante(newIntegrante({nombre:"Carlos",instrumento:"Bateria"}))// Yo xD banda.agregarIntegrante(newIntegrante({nombre:"Cesar",instrumento:"Xilofono"})) banda.agregarIntegrante(newIntegrante({nombre:"Victor",instrumento:"Marimba"})) banda.agregarIntegrante(newIntegrante({nombre:"Jose",instrumento:"Redolblante"}))// Invitado
Output
{nombre:'Ensamble de Percusion Venezuela',generos:['Clasico','Afro-Caribeno','Latino','Llanero'],integrantes:[Integrante{nombre:'Ricardo',instrumento:'Timpani'},Integrante{nombre:'Denis',instrumento:'Xilofono'},Integrante{nombre:'Maria',instrumento:'Vibraphone'},Integrante{nombre:'Gilmer',instrumento:'Bateria'},Integrante{nombre:'Jair',instrumento:'Maracas'},Integrante{nombre:'Cesar',instrumento:'Xilofono'},Integrante{nombre:'Victor',instrumento:'Marimba'},Integrante{nombre:'Jose',instrumento:'Redolblante'}]}
YouTube
Ensamble de percusión Venezuela - Afta Stuba
IMPORTANTE: no vea este mensaje a menos que haya intentado hacer el desafio, no quiero molestar con mi código.
pero si crees que te pueda servir de alguna manera, entonces aqui lo dejo :D
classBanda{constructor({ nombre, generos =[],}){this.nombre= nombre;this.generos= generos;this.integrantes=[];}agregarIntegrante(integranteNuevo){if(this.integrantes.some(obj=>obj.instrumento==='Bateria')){console.log('ya hay un baterista')}else{this.integrantes.push(integranteNuevo)}}}classIntegrante{constructor({ nombre, instrumento,}){this.nombre=nombre;this.instrumento=instrumento;}}export{Banda,Integrante,}
Genial que compartan sus resultados! y sí claro no vengan a ver los comentarios si aún no lo resuelven 😄
Si desde el inicio agregas un baterista al momento de agregar un segundo integrante te manda el mensaje que ya existe un baterista, lo cual es cierto pero ya no permite agregar otro miembro.
Como me costo hacer este ejercicio, me vi tentado a ver la solución de los demas, pero al final no lo hice y lo resolví 🥹
classBanda{constructor({ nombre, generos =[]}){this.nombre= nombre;this.generos= generos;this.integrantes=[];}agregarIntegrante(integranteNuevo){// Tu código aquí 👈if(this.integrantes.find((element)=> element.instrumento==='Bateria')){console.log('La banda ya tiene un baterista');}else{this.integrantes.push(integranteNuevo);}}}//Crear clase IntegranteclassIntegrante{// Tu código aquí 👈constructor({ nombre, instrumento }){this.nombre= nombre;this.instrumento= instrumento;}}const data ={nombre:'Los Jacks',generos:['rock','pop','post-punk'],integrantes:[],};const banda =newBanda(data);banda.agregarIntegrante(newIntegrante({nombre:'Erik',instrumento:'Guitarra'}));banda.agregarIntegrante(newIntegrante({nombre:'Paul',instrumento:'Bateria'}));banda.agregarIntegrante(newIntegrante({nombre:'Paul',instrumento:'Bateria'}));export{Banda,Integrante,}
Me dice que está mal el 4to punto (debe agregar nuevos integrantes), pero a mí me funciona en la consola del navegador:
No esta correcto porque la validación del isBassplayer siempre va a dar falso, de ahí la importancia de seguir las instrucciones si la prueba se hace con
jamas va a encontrar coincidencia con instrument:"Bateria"
Bueno les dejo mi solución.
Por cierto para el análisis del baterista lo que hago es verificar si no es baterista el nuevo integrante para agregarlos al array de integrantes y en el caso de que si sea baterista busco si lo encuentro en el array de integrantes, en caso que si me devuelve un indice diferente a -1. Y solo si es -1 lo agrego al array de integrantes.
Mi aporte, veo en las respuestas que muchos obviaron el hecho de que el ejercicio pedía que solo no dejara agregar más de un baterista, otros instrumentos sí podían ser más de uno
Excelente aporte, tu bien lo dices, la mayoría no tuvo en cuenta que se puede agregar a otros integrantes con otro tipo de instrumentos.
Excelente aporte.
Mi codigo tambien funciona en el VSC pero no en el modulo de pruebas de Platzi:
classBanda{constructor({ nombre, generos =[],}){this.nombre= nombre;this.generos= generos;this.integrantes=[];}agregarIntegrante(integranteNuevo){const find =this.integrantes.find(integrante=> integrante.instrumento=== integranteNuevo.instrumento);if(find){console.error('Ya existe un', integranteNuevo.instrumento,'en la banda');}else{this.integrantes.push(integranteNuevo);}}}//Crear clase IntegranteclassIntegrante{constructor(name,instrumento){this.name= name;this.instrumento= instrumento;}}const erik =newIntegrante("Erik","Baterista");const aerosmith =newBanda({nombre:"aerosmith"})aerosmith.agregarIntegrante(erik);const juan =newIntegrante('fABIO',"Baterista");aerosmith.agregarIntegrante(juan);
Retorna:
Si alguien mira donde me equivoque le agradezco la retroalimentacion.
lo que sucede con tu código :
const find = this.integrantes.find(integrante => integrante.instrumento === integranteNuevo.instrumento).
const juan = new Integrante('fABIO',"Bateria");
const erik = new Integrante("Erik","guitara");
En la primera comparación (juan) del método find integrante.instrumento(undefined) por que el arreglo esa vacío y integrantesNuevo.instrumento(te da el instrumento) en otras palabras la comparacion es undefined que tiende a false y este se agrega.En la segunda vez que agregas otro integrante(erik) paso algo similar por que ahora integrante.instrumento("bateria") y el integrantesNuevo.instrumento(guitarra) la comparacion es undefined y tambien agrega pero aqui lo que falla es que al colocar otro integrante que sea guitarrista o baterista no va agregar por que ya ambos estan en el arreglo, vas a poder seguir agregando otros instrumentos, pero ya no los repetidos y aqui el error.
SPOILER: no veas este mensaje a menos que hayas intentado hacer el desafio, no quiero molestar con mi código.
pero si crees que te pueda servir de alguna manera, entonces aqui lo dejo 😄
Hay que validar en una variable si se repite y luego ejecutar un condicional, lo hice como lo haciamos en el taller práctico de JS: cre tu videojuego, me parece la forma más óptima.
classBanda{constructor({ nombre, generos =[],}){this.nombre= nombre;this.generos= generos;this.integrantes=[];}agregarIntegrante(integranteNuevo){// Tu código aquí 👈const agregarInt =this.integrantes.every(({ instrumento })=> instrumento !== integranteNuevo.instrumento) agregarInt ?this.integrantes.push(integranteNuevo):newError(`Ya hay un integrante que toca ${integranteNuevo.instrumento}`)}}//Crear clase IntegranteclassIntegrante{// Tu código aquí 👈constructor({ nombre, instrumento }){this.nombre= nombre;this.instrumento= instrumento;}}export{Banda,Integrante,}
Mi código (después de los gatitos antispoiler):
≽^-˕-^≼
≽^-˕-^≼
≽^-˕-^≼
≽^-˕-^≼
≽^-˕-^≼
≽^-˕-^≼
≽^-˕-^≼
≽^-˕-^≼
classBanda{constructor({ nombre, generos =[],}){this.nombre= nombre;this.generos= generos;this.integrantes=[];}agregarIntegrante(integranteNuevo){// Tu código aquí 👈const bateristas =this.integrantes.filter(member=> member.instrumento.toLowerCase()==='bateria');const numberoDeBeteristas = bateristas.length;const nuevoInstrumento = integranteNuevo.instrumento.toLowerCase();if(numberoDeBeteristas >0& nuevoInstrumento ==='bateria'){// console.log('Solo se puede tener un baterista a la vez')}else{this.integrantes.push(integranteNuevo)}}}//Crear clase IntegranteclassIntegrante{// Tu código aquí 👈constructor({ nombre ='', instrumento ='',}){this.nombre= nombre;this.instrumento= instrumento;}}export{Banda,Integrante,}
Lo hice de esta forma, en VS funciona pero en el editor de platzi no corre el código
classBanda{constructor({ nombre, generos =[],}){this.nombre= nombre;this.generos= generos;this.integrantes=[];}agregarIntegrante(integranteNuevo){const res =this.integrantes.find(item=> item.instrumento== integranteNuevo.instrumento)if(!res){this.integrantes.push(integranteNuevo)}}}//Crear clase IntegranteclassIntegrante{constructor({ nombre, instrumento}){this.nombre= nombre;this.instrumento= instrumento;}}const data ={nombre:"Los Jacks",generos:["rock","pop","post-punk"],integrantes:[],}const banda =newBanda(data)banda.agregarIntegrante(newIntegrante({nombre:"Erik",instrumento:"Guitarra"}))banda.agregarIntegrante(newIntegrante({nombre:"Paul",instrumento:"Bateria"}))console.log(banda);
Yo le agregué un atributo booleano que almacena por default en false si hay un baterista. En el momento que se agrega un integrante que toque la batería se establece en true, y ese se usa
para hacer una verificación cada que agregue un integrante.
compañeros acá mi respuesta al ejercicio, recuerda NO verla hasta que lo soluciones! :)
go go go si puedes :D