5 votes

Lodash - vérifie si l'objet contient une des clés du tableau.

J'ai donc un objet et un tableau. Je veux vérifier si l'objet contient l'une des clés du tableau. Quelque chose comme ceci :

Objet :

const user = {
    firstname: 'bob',
    lastname: 'boblastname'
    email: 'bob@example.com'
}

Les tableaux :

const lastname = ['lastname'];
const userDetails = ['firstname', 'email'];

Ainsi, lors de la vérification de l'existence d'une clé, il doit retourner vrai. Exemple :

_.includesKey(user, lastname) // true
_.includesKey(user, userDetails ) // true

6voto

alebianco Points 1700

Je sais que la question porte sur lodash, mais je me suis toujours demandé pourquoi utiliser une bibliothèque tierce pour effectuer une tâche plutôt triviale

Une façon d'approcher le problème avec les outils js de base pourrait être

const user = {
    firstname: 'bob',
    lastname: 'boblastname',
    email: 'bob@example.com'
}

const lastname = ['lastname'];
const userDetails = ['firstname', 'email'];

const hasLastName = lastname.every(prop => prop in user)
const hasDetails = userDetails.every(prop => prop in user)

console.log("has last name?", hasLastName)
console.log("has user details?", hasDetails)

il réduit la taille de votre projet en ne l'encombrant pas de bibliothèques externes, il est certainement plus rapide et je dirais même plus facile à lire et à comprendre.

0voto

Nenad Vracar Points 17412

Vous pouvez utiliser some y intersection et renvoie vrai/faux comme résultat.

const user = {
    firstname: 'bob',
    lastname: 'boblastname',
    email: 'bob@example.com'
}

const lastname = ['lastname'];
const userDetails = ['firstname', 'email'];

console.log(_.some(_.intersection(lastname, _.keys(user))))
console.log(_.some(_.intersection(userDetails, _.keys(user))))

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X