質問

私は以下のような配列を持っています。

[emails] => Array (
   [0] => Array (
      [a] => a@a.com
      [is_verified_a] => 1
    )
   [1] => Array (
      [b] => a@a.com
      [is_verified_b] => 1
   )
),
.

この配列で重複を見つける必要がありますが、キーは異なり、aとbは同じEメール 'a@a.com'を持ちます。

すなわち、この配列の重複をチェックし、別の変数に値 'a@a.com'だけを必要とする必要があります。_.UNIQまたは他のアンダースコア関数を使用して見つける方法はありますか?

助けてください。たくさんあります。

役に立ちましたか?

解決

あなたがやりたいことは明確ではありません。ただし、JavaScriptを使用しているため、配列は次のようになります。

var emails = [
    {
        email: "a@a.com",
        verified: true,
        key: "a"
    },
    {
        email: "a@a.com",
        verified: true,
        key: "b"
    }
];
.

オブジェクト内のキーを別々にエンコードすることは意味がありません(特にプロパティ名ではありません)。

配列から重複を削除するために、一般的なremoveDuplicatesBy関数を作成できます。

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;
}
.

次のようにemailsアレイに重複を削除できます。

var uniqueEmails = removeDuplicatesBy(function (a, b) {
    return a.email === b.email && a.verified === b.verified;
}, emails);
.

あなたがあなたのオブジェクトに鍵を維持する必要があるなら、あなたはおそらく何か間違っていることをしています。あなたはあなたのコードの再構築を検討するべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top