Bonjour à tous,

[INTRO]
J'avais fais un script simple et qui fonctionnait très bien se basant sur les key=>value. Mon script n'a aucune prétention, il ne gère pas de flux boursier, je suis à la base pas développeur JS mais le script fait bien le job.
Mais malheureusement je dois désormais introduit des key identiques et tout mon script tombe à l'eau.
Je sais pas comment le modifier, voir le refaire.

[DETAIL]
Le contexte étant très très compliqué à la base, je l'ai volontairement très adapté et simplifié par soucis de compréhension et d'une meilleur lisibilité. On va donc parler ici de bonbon et de viande

Je possède une liste de produit à blacklister suivant des caractéristiques spécifiques.
Il y a le "type" qui constitue la key ex:"bonbon". et la valeur associée : un code (non utilisé dans l'exemple mais normalement il l'ai) et l'origine (ex: Chine). (note: les string sont fortement normés)
Le principe est simple: Si on soumet un produit qui répond aux caractéristiques, la fonction retourne true: il est blacklisté.Exemple le bonbon vient de chine, il est blacklisté.

Le code est très simple. je regarde si il existe une key de la blacliste identique au type du produit donné. Si oui, je teste si l'origine est identique.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
let blacklist = {
	"bonbon": [1,"Chine"],
	"viande": [4,"Angleterre"],
	"lait": [2,"Chine"],
	 "tomate": [4, "Egypte"]
}
 
function checkBlacklist(produit, origine) {
	if (blacklist.hasOwnProperty(produit)){
		[codeBlacklisted, origineBlacklisted] = blacklist[produit];
		if(origineBlacklisted == origine){
			return true;
		}
	}
	return false;
}
console.log("blacklister ? " +  checkBlacklist("bonbon", "chine"));
Maleureusement, des nouvelles régles de blackliste viennent d'arriver. La voici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
let blacklist = {
	"bonbon": [1,"Chine"],
	"bonbon": [1,"Vietnam"],
	"viande": [4,"Angleterre"],
	"lait": [2,"Chine"],
	"tomate": [4, "Egypte"]
}
Vous voyez le problème. il y a 2 key identique. Le bonbon du vietnam écrase la regle du bonbon de chine, qui est alors plus détecté.
Je ne peux toucher le champ "origine" qui ne peut contenir que un seul pays.
Mais je peux changer toute la structure de la blackliste tant qu'on modifie pas les données (champ type, code et origine).
Si vous avez une idée pour adapter mon script pour qu'il fonctionne de nouveau, je vous remercie par avance.