Вы можете создать Set
, чтобы обеспечить эффективный поиск существующих значений:
const hasDuplicates = (data) => {
const set = new Set();
for (let {empno, extension} of data) {
const key = `${empno}/${extension}`;
if (set.has(key)) {
return true;
}
set.add(key);
}
return false;
};
Полный фрагмент:
const data = [{
"id": 269,
"empno": "34567",
"extension": 345
},
{
"id": 269,
"empno": "34568",
"extension": 346
},
{
"id": 269,
"empno": "34569",
"extension": 345
},
{
"id": 269,
"empno": "34567",
"extension": 345
}
];
const hasDuplicates = (data) => {
const set = new Set();
for (let {empno, extension} of data) {
const key = `${empno}/${extension}`;
if (set.has(key)) {
return true;
}
set.add(key);
}
return false;
};
console.log(hasDuplicates(data));
Если вы хотите что-то менее подробное за счет обработки всего массива, даже если дубликаты уже были обнаружены, вы можете уменьшить до Set
и сравнить его размер с исходным массивом:
const hasDuplicates = (data) => data.length !== data.reduce((a, {empno, extension}) => a.add(`${empno}/${extension}`), new Set).size;
Полный фрагмент:
const data = [{
"id": 269,
"empno": "34567",
"extension": 345
},
{
"id": 269,
"empno": "34568",
"extension": 346
},
{
"id": 269,
"empno": "34569",
"extension": 345
},
{
"id": 269,
"empno": "34567",
"extension": 345
}
];
const hasDuplicates = (data) => data.length !== data.reduce((a, {empno, extension}) => a.add(`${empno}/${extension}`), new Set).size;
console.log(hasDuplicates(data));