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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top