Как найти дубликаты в массиве пар «ключ-значение»ails.js

StackOverflow https://stackoverflow.com//questions/23002403

Вопрос

У меня есть массив, как показано ниже.

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

Мне нужно найти дубликаты в этом массиве, но ключи разные, т.е. a и b имеют один и тот же адрес электронной почты «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