Comment trouver des doublons dans le tableau de paires clé-valeur sails.js
-
20-12-2019 - |
Question
J'ai un tableau comme ci-dessous.
[emails] => Array (
[0] => Array (
[a] => a@a.com
[is_verified_a] => 1
)
[1] => Array (
[b] => a@a.com
[is_verified_b] => 1
)
),
J'ai besoin de trouver des doublons dans ce tableau, mais les clés sont différentes, c'est-à-dire que a et b ont le même e-mail « a@a.com ».
c'est-à-dire que vous devez vérifier les doublons dans ce tableau et n'avoir besoin que de la valeur 'a@a.com' dans une variable distincte.Existe-t-il un moyen de le savoir en utilisant _.uniq ou toute autre fonction de trait de soulignement ?
S'il vous plaît, aidez-moi. Merci beaucoup.
La solution
Ce que vous voulez faire n'est pas clair.Cependant, puisque vous utilisez JavaScript, votre tableau devrait ressembler à :
var emails = [
{
email: "a@a.com",
verified: true,
key: "a"
},
{
email: "a@a.com",
verified: true,
key: "b"
}
];
Cela n'a aucun sens d'encoder séparément les clés de vos objets (surtout pas dans les noms de propriétés).
Pour supprimer les doublons d'un tableau, nous pouvons créer un générique removeDuplicatesBy
fonction:
function removeDuplicatesBy(comparator, array) {
var length = array.length;
var unique = [];
for (var i = 0; i < length; i++) {
var element = array[i];
var isUnique = true;
for (var j = 0; j < i; j++) {
if (comparator(element, array[j])) {
isUnique = false;
break;
}
}
if (isUnique) unique.push(element);
}
return unique;
}
Nous pouvons maintenant supprimer les doublons dans le emails
tableau comme suit :
var uniqueEmails = removeDuplicatesBy(function (a, b) {
return a.email === b.email && a.verified === b.verified;
}, emails);
Si vous devez conserver les clés de vos objets, vous faites probablement quelque chose de mal.Vous devriez envisager de restructurer votre code.