Как найти дубликаты в массиве пар «ключ-значение»ails.js
-
20-12-2019 - |
Вопрос
У меня есть массив, как показано ниже.
[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);
Если вам нужно сохранять ключи в ваших объектах, возможно, вы делаете что-то неправильно.Вам следует рассмотреть возможность реструктуризации вашего кода.