vérifier exitence d'un objet dans un tableau

vérifier exitence d'un objet dans un tableau - Javascript/Node.js - Programmation

Marsh Posté le 29-10-2023 à 12:01:28    

Bonjour,
 
Je débute en javascript, j'essaye de vérifier la présence d'un objet au sein d'un tableau, lui-même dans une class. Je n'y arrive pas pour le moment.
 
Mon code:
 
1ère class livre avec le constructeur
 

Code :
  1. class Livre {
  2.             constructor (titre,pages){
  3.                   this.titre = titre
  4.                   this.pages = pages
  5.             }
  6. }


 
 
2ème class, avec la méthode addbook qui va poser problème

Code :
  1. class Librairie {
  2.             #livres = []
  3.             addbook(livre){
  4.                  
  5.                   if(this.#livres[livre] == undefined){
  6.                         this.#livres.push(livre)
  7.                   }
  8.                   else{
  9.                         console.log('ce livre existe déjà')
  10.                   }
  11.  
  12.             }
  13.             addbooks(livres){
  14.                   for(let livre of livres){
  15.                         this.#livres.push(livre)
  16.                   }
  17.             }
  18.       }


 
Création  des objets
 

Code :
  1. let book1 = new Livre('Seigneur des anneaux', 300)
  2. let book2 = new Livre('Tintin au tibet', 25)
  3. let bibliotheque = new Librairie()


 
J'essaie de perfectionner la fonction addbook en ajoutant une condition:
si le livre passé en argument est déjà présent dans le tableau '#livres' de la 'bibliothèque', alors le livre ne doit pas s'ajouter, le code doit afficher 'le livre existe déjà'.
A l'évidence mon code ne fonctionne pas puisque si je fais 2 fois  

Code :
  1. bibliotheque.addbook(book1)

alors le tableau #livres contient 2 fois le livre book1 :(
 
Preneur de vos remarques  :jap:  
Merci

Reply

Marsh Posté le 29-10-2023 à 12:01:28   

Reply

Marsh Posté le 30-10-2023 à 11:41:31    

Quand tu fait ligne 7 :

Code :
  1. if(this.#livres[livre] == undefined){


"livre" correspond a l'objet livre que tu as déjà mis, par contre this.#livres[X]  attend que X soit un index de ton tableau (si tu n'as pas mis d'autre livre l'index sera surement 0).
Quand bien même tu serais sur le bon index, je ne penses pas que tu puisse comparer un objet de cette façon, je penses qu'il faudra que tu compares ses propriétés.
Que doit tu faire si tu as une autre édition du seigneur des anneaux avec plus de page, tu l'ajoutes quand même ou pas, sinon une comparaison sur le nom seul devrait suffire...
 [:alkatraz]  
https://www.google.com/search?q=jav [...] ect+exists


---------------
D3
Reply

Marsh Posté le 31-10-2023 à 10:36:50    

mechkurt a écrit :

Quand tu fait ligne 7 :

Code :
  1. if(this.#livres[livre] == undefined){


"livre" correspond a l'objet livre que tu as déjà mis, par contre this.#livres[X]  attend que X soit un index de ton tableau (si tu n'as pas mis d'autre livre l'index sera surement 0).
Quand bien même tu serais sur le bon index, je ne penses pas que tu puisse comparer un objet de cette façon, je penses qu'il faudra que tu compares ses propriétés.
Que doit tu faire si tu as une autre édition du seigneur des anneaux avec plus de page, tu l'ajoutes quand même ou pas, sinon une comparaison sur le nom seul devrait suffire...
 [:alkatraz]  
https://www.google.com/search?q=jav [...] ect+exists


 
Exact c'est ce que j'ai fini par faire finalement, en vérifiant l'existence du titre et en n'ajoutant pas le livre si le titre est trouvé.
 
Merci pour ta réponse

Reply

Marsh Posté le 13-11-2023 à 06:59:57    

mais pourquoi ce # devant le nom de varaible, en JS on utilise jamais de # pour une variable, et en plus ça pourrait porter à ambiguité


---------------
Blablaté par Harko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed