J'ai codé un filtre pour trouver une belle ukrainienne sur un site de rencontre

L'indispensable forum de Bla Bla pour discuter de tout ou de rien
Répondre
lemiguel
Messages : 2
Enregistré le : 02 oct. 2024, 12:49

J'ai codé un filtre pour trouver une belle ukrainienne sur un site de rencontre

Message par lemiguel » Aujourd’hui, 08:40

Bonjour, ça fait 3 semaines que je bosse sur un petit script perso en JS... basiquement un truc qui parse des profils sur un site de rencontre pour m'aider à filtrer selon des critères précis. L'idée c'est de faire tourner sa dans un navigateur via une extension maison, avec du fetch et du DOM parsing.

Le truc qui me bloque c'est la gestion des attributs de nationalité. Sur le site en question (un site spécialisé pour rencontrer une belle ukrainienne, ce genre de plateforme internationale) les données de profil sont retournées en JSON mais la clé "nationality" est parfois null, parfois absente carrément, parfois c'est une string vide selon les endpoints. Du coup mon filtre plante ou renvoie des résultats incohérents.

Concrètement j'ai un truc du genre :
const profiles = data.filter(p => p.nationality === "UA") Sauf que sa marche pas si la clé est absente, ça throw une erreur ou ça retourne rien. J'ai essayé avec optional chaining :

const profiles = data.filter(p => p?.nationality === "UA")

C'est mieux mais les profils ou la clé existe mais vaut null sont quand même éliminés alors qu'ils pourraient matcher. Franchement j'arrive plus a savoir si c'est moi qui gère mal le null vs undefined ou si c'est le schéma JSON du site qui est juste inconsistant. Quelqu'un a déjà bossé sur ce genre de parsing avec des données mal normalisées ? Genre des APIs tierces ou le schéma change selon la version de l'endpoint, c'est des trucs compliqué à gérer proprement. J'aimerais avoir un filtre robuste qui couvre tous les cas sans 15 conditions imbriquées.

Avatar du membre
webmaster
Administrateur du site
Messages : 650
Enregistré le : 28 févr. 2017, 15:19

Re: J'ai codé un filtre pour trouver une belle ukrainienne sur un site de rencontre

Message par webmaster » Aujourd’hui, 10:09

Bonjour

Le test p?.nationality === "UA" oblige à la condition stricte que le profil existe et que la nationalité soit UA
Pour ajouter que le profil puisse être aussi null ou undefined, il faut écrire une double condition avec un OR :

Code : Tout sélectionner

profiles = data.filter(p => p == null || p?.nationality === "UA")
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Répondre