Playground - Implementación de Observador en Newsletter
Clase 76 de 99 • 30 días de JavaScript
Contenido del curso
Clase 76 de 99 • 30 días de JavaScript
Contenido del curso
Alejandro Anaya
andres valencia
Frandel Corporan Rodríguez
Raul Carrillo Garrido
Joan Alexander Valerio Rodríguez
Daniel Romao
Rubén Hernández Hernández
Andres Felipe Diago Matta
David Ochoa
Pablo Perez
Alexis Corrales
Angel Javier Sanchez Tenjo
Elias Rayas Gonzalez
Raul Carrillo Garrido
Carina Payleman
Victor Ortiz
Abril Darynka Tapia Sosa
Esteban Alzate Atehortua
JAIME EDUARDO DIAZ TOBON
Israel Blas
🛡️🛡️Escudo anti-spoilers🛡️🛡️
Mi solución al reto:
Archivo: exercise.js
export class Newsletter { subscribers = [] subscribe(subscriber) { this.subscribers.push(subscriber) } unsubscribe(email) { let indexToRemove = this.subscribers.findIndex((s) => s.email === email) return this.subscribers.splice(indexToRemove, 1); } post(article) { for (let s of this.subscribers) { s.receive(article) } } }
Archivo: Subscriber.js
export class Subscriber { // Tu código aquí 👈 constructor(email) { this.email = email } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
exercises.js
export class Newsletter { // Tu código aquí 👈 constructor() { this.subscribers =[] } subscribe(subscriber) { this.subscribers.push(subscriber) console.log(`Se ha suscrito el usuario con correo ${subscriber.email}`) } unsubscribe(email) { const index = this.subscribers.findIndex(el => el.email === email); if (index !== -1) { this.subscribers.splice(index, 1); console.log(`Se ha eliminado de la lista de suscriptores el usuario con correo ${email}`); } } post(article) { console.log(`Se ha publicado un nuevo artículo: ${article.title}`); console.log(`Contenido: ${article.content}`) this.subscribers.forEach(subscriber => subscriber.receive(article)); } }
Subscriber.js
export class Subscriber { // Tu código aquí 👈 constructor(email) { this.email = email; } receive(article) { console.log(`El usuario con correo ${this.email} ha recibido el artículo ${article.title}`); } }
ez el tutorial en veldad
exercise.js
export class Newsletter { subscribers = [] subscribe(subscriber) { this.subscribers.push(subscriber) } unsubscribe(email) { const index = this.subscribers.findIndex(item => item.email === email) this.subscribers.splice(index,1) } post(article) { this.subscribers.forEach(sub => sub.receive(article)) } }
subcriber.js
export class Subscriber { constructor(email) { this.email = email } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
No me aparece el día 24 (pero si el 25 y 26 aunque no puedo saltar adelante) ¿A alguien mas le paso? gracias!
Super agradecido de que redactaron bien este reto. Aquí les comparto mi solución:
Mi solución: . . . . . . . . . Subscriber.js
export class Subscriber { constructor(email) { this.email = email; } receive(article) { return console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`); } }
exercise.js
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const subIndex = this.subscribers.findIndex(sub => sub.email == email); this.subscribers.splice(subIndex, 1); } post(article) { this.subscribers.forEach(sub => sub.receive(article)); } }
💚 Mi solución💚
🛡️ MURO ANTI-SPOILERS 🛡️
!cat
Subscriber.js
export class Subscriber { constructor(email) { this.email = email } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
exercise.js
export class Newsletter { constructor() { this.subscribers = [] } subscribe(subscriber) { this.subscribers.push(subscriber) } unsubscribe(email){ let indexToDelete = this.subscribers.findIndex(subscriber => subscriber.email === email) if (indexToDelete === -1) throw new Error("Email no suscrito") this.subscribers.splice(indexToDelete, 1) } post(article) { this.subscribers.forEach(subscriber => subscriber.receive(article)) } }
🛡️🛡️Escudo anti-spoilers🛡️🛡️ . . . . . . . . . . .
class Newsletter { // Tu código aquí 👈 constructor(){ this.subscribers = []; } subscribe(subscriber){ this.subscribers.push(subscriber); } unsubscribe(email){ this.subscribers = this.subscribers.filter(subscriber => subscriber.email !== email); } post(article){ this.subscribers.forEach(subscriber => subscriber.receive(article)); } } class Subscriber { // Tu código aquí 👈 constructor(email){ this.email = email; } receive(article){ console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`); } } //Ejemplo //Input: const newsletter = new Newsletter(); const subscriber1 = new Subscriber("pepe@mail.com"); const subscriber2 = new Subscriber("juanito@mail.com"); const subscriber3 = new Subscriber("pedro@mail.com"); const article = { title: "30 días de js", content: "Aprende js en 30 días" } newsletter.subscribe(subscriber1); newsletter.subscribe(subscriber2); newsletter.subscribe(subscriber3); newsletter.post(article); /*Output: "El suscriptor pepe@mail.com ha recibido el artículo: 30 días de js" "El suscriptor juanito@mail.com ha recibido el artículo: 30 días de js" "El suscriptor pedro@mail.com ha recibido*/
🛡️🛡️🛡️Escudo anti spoilers🛡️🛡️🛡️
Implementación de observador en newsletter
!Spoiler Shield
Subscriber.js
export class Subscriber { // Tu código aquí 👈 constructor(email) { this.email = email; } receive(article) { return `El suscriptor ${this.email} ha recibido el artículo: ${article.title}`; } }
exercise.js
export class Newsletter { // Tu código aquí 👈 constructor() { this.subscribers = []; this.articles = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { this.subscribers = this.subscribers.filter( (subscriber) => subscriber.email != email ); } post(article) { this.articles.push(article); this.subscribers.forEach((subscriber) => subscriber.receive(article)); } }
// Subscriber.js export class Subscriber { constructor(email) { this.email = email } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
// Exercise.js export class Newsletter { constructor() { this.subscribers = [] } subscribe(subscriber) { this.subscribers.push(subscriber) } unsubscribe(email) { const index = this.subscribers.findIndex(s => s.email === email) this.subscribers.splice(index, 1) } post(article) { this.subscribers.forEach(s => s.receive(article)) } }
export class Subscriber { constructor(email) { this.email = email; } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`); } }
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const index = this.subscribers.findIndex(subscriber => subscriber.email === email); if (index !== -1) { this.subscribers.splice(index, 1); } } post(article) { this.subscribers.forEach(subscriber => subscriber.receive(article)); } }
Hola dejo mi solución al Reto:
Subscriber.js
export class Subscriber { constructor(email) { this.articles = []; this.email = email; } receive(article) { this.articles.push(article); console.log( `El suscriptor ${this.email} ha recibido el artículo: ${article.title}` ); } }
exercise.js
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { this.subscribers = this.subscribers.filter( (subscriber) => subscriber.email !== email ); } post(article) { this.subscribers.forEach((subscriber) => subscriber.receive(article)); } }
Solución
class Subscriber { // Tu código aquí 👈 constructor(email) { this.email = email; } receive(article) { console.log( `Suscriber ${this.email}, received the ${article.title} article.` ); } } class Newsletter { // Tu código aquí 👈 subscribers = []; subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const deletedSubscriberIndex = this.subscribers.findIndex( (sub) => sub.email === email ); this.subscribers.splice(deletedSubscriberIndex, 1); } post(article) { this.subscribers.forEach((sub) => sub.receive(article)); } }
. . . . . .
export class Subscriber { constructor(email) { this.email = email; } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`); } }
. . . .
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { this.subscribers = this.subscribers.filter(subscriber => subscriber.email !== email); } post(article) { this.subscribers.forEach(subscriber => subscriber.receive(article)); } }
Subscriber.js
class Subscriber { // OBSERVADOR constructor(email) { this.email = email; } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
exercise.js
export class Newsletter { //OBSERVABLE: constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const removedSubscriber = this.subscribers.findIndex((subscriber) => subscriber.email === email) return this.subscribers.splice(removedSubscriber, 1); } post(article) { this.subscribers.forEach(subscriber => { subscriber.receive(article); }); } }
otro mas, ya me quedan menos . . . . . . . . . . . . . . . . . . . .
exercise.js
export class Newsletter { // Tu código aquí 👈 constructor() { this.subscribers = [] } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { this.subscribers = this.subscribers.filter(sub => sub.email !== email) } post(article) { this.subscribers.forEach(sub => sub.receive(article)); } }
Subscriber.js
export class Subscriber { // Tu código aquí 👈 constructor(email) { this.email = email; } receive(article) { console.log(`El subscriptor ${this.email} ha recibido un: ${article.title}`); } }
Mi solución . . . . . . . . . . . . . .
class Newsletter { // Tu código aquí 👈 constructor(){ this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const index = this.subscribers.findIndex((item) => item.email === email); this.subscribers.splice(index, 1) } post(article){ this.subscribers.forEach((subscriber) => subscriber.receive(article)); } } class Subscriber{ constructor(email) { this.email = email; } receive(article){ console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
Mi solución: fui feliz por lograrlo a la primera :D (aunque igual estaba fácil) . . . . . . . . . . . . . . . . exercise.js
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const toDelete = this.subscribers.findIndex(subscriber => { subscriber.email = email }) this.subscribers.splice(toDelete, 1); } post(article){ this.subscribers.forEach(subscriber=> { subscriber.receive(article); }) } }
Subscriber.js
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const toDelete = this.subscribers.findIndex(subscriber => { subscriber.email = email }) this.subscribers.splice(toDelete, 1); } post(article){ this.subscribers.forEach(subscriber=> { subscriber.receive(article); }) } }
++MI SOLUCION++ 💪 . . . . . . . . . . . . . . . class Subscriber
export class Subscriber { constructor(email) { this.email = email; } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`); } }
class Newsletter
export class Newsletter { constructor() { this.subscribers = []; } subscribe(subscriber) { this.subscribers.push(subscriber); } unsubscribe(email) { const index = this.subscribers.findIndex(subscribe => subscribe.email === email); this.subscribers.splice(index, 1); } post(article) { this.subscribers.forEach(subscribe => subscribe.receive(article)); } }
Bueno aportando mi solución:
. . . . . . . . . . .
Subscriber.js
export class Subscriber { constructor(email) { this.email = email } receive(article) { console.log(`El suscriptor ${this.email} ha recibido el artículo: ${article.title}`) } }
exercise.js
export class Newsletter { constructor() { this.subscribers = [] } subscribe(subscriber) { this.subscribers.push(subscriber) } unsubscribe(email) { const pos = this.subscribers.findIndex(subscriber => subscriber.email === email) this.subscribers.splice(pos, 1) } post(article) { this.subscribers.forEach(subscriber => subscriber.receive(article)) } }