So finden Sie Duplikate im Schlüssel-Wert-Paar-Array „sails.js“.
-
20-12-2019 - |
Frage
Ich habe ein Array wie unten.
[emails] => Array (
[0] => Array (
[a] => a@a.com
[is_verified_a] => 1
)
[1] => Array (
[b] => a@a.com
[is_verified_b] => 1
)
),
Ich muss Duplikate in diesem Array finden, aber die Schlüssel sind unterschiedlich, dh a und b haben dieselbe E-Mail-Adresse „a@a.com“.
Das heißt, Sie müssen in diesem Array nach Duplikaten suchen und benötigen nur den Wert „a@a.com“ in einer separaten Variablen.Gibt es eine Möglichkeit, dies mithilfe von _.uniq oder anderen Unterstrichfunktionen herauszufinden?
Bitte helfen Sie. Vielen Dank.
Lösung
Was Sie tun möchten, ist nicht klar.Da Sie jedoch JavaScript verwenden, sollte Ihr Array wie folgt aussehen:
var emails = [
{
email: "a@a.com",
verified: true,
key: "a"
},
{
email: "a@a.com",
verified: true,
key: "b"
}
];
Es macht keinen Sinn, Schlüssel in Ihren Objekten separat zu kodieren (insbesondere nicht in Eigenschaftsnamen).
Um Duplikate aus einem Array zu entfernen, können wir ein generisches Array erstellen removeDuplicatesBy
Funktion:
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;
}
Jetzt können wir Duplikate in der entfernen emails
Array wie folgt:
var uniqueEmails = removeDuplicatesBy(function (a, b) {
return a.email === b.email && a.verified === b.verified;
}, emails);
Wenn Sie Schlüssel in Ihren Objekten verwalten müssen, machen Sie wahrscheinlich etwas falsch.Sie sollten über eine Umstrukturierung Ihres Codes nachdenken.