используя массив в качестве альтернативы Set - PullRequest
0 голосов
/ 23 июня 2019

Например, к нам приходят посетители, и мы хотели бы помнить всех. Но повторные посещения не должны приводить к дублированию. Посетитель должен быть «засчитан» только один раз. использование set будет таким:

const set = new Set();
const sara = { name: 'sara' };
const leyla = { name: 'leyla' };
const mera = { name: 'mera' };
set.add(sara);
set.add(mera);
set.add(leyla);
set.add(sara);
set.add(mera);

for (let user of set) {
   console.log(user);
}

вместо набора я хочу использовать массив пользователей и для проверки на дубликат я использую arr.find () какой код для этого?

1 Ответ

1 голос
/ 23 июня 2019

Чтобы проверить, существует ли уже name, используйте find:

if (!arr.some(({ name }) => name === obj.name)) arr.push(obj);

function addUniq(arr, obj) {
  if (!arr.some(({ name }) => name === obj.name)) arr.push(obj); 
}

const uniqArr = [];
const sara = { name: 'sara' };
const leyla = { name: 'leyla' };
const mera = { name: 'mera' };
addUniq(uniqArr, sara);
addUniq(uniqArr, mera);
addUniq(uniqArr, leyla);
addUniq(uniqArr, sara);
addUniq(uniqArr, mera);

uniqArr.forEach(e => console.log(e));
.as-console-wrapper { max-height: 100% !important; top: auto; }

Вы также можете добавить этот метод непосредственно к Array.prototype объекту:

Array.prototype.addUniq = function(obj) {
  if (!this.some(({ name }) => name === obj.name)) this.push(obj); 
}

const uniqArr = [];
const sara = { name: 'sara' };
const leyla = { name: 'leyla' };
const mera = { name: 'mera' };
uniqArr.addUniq(sara);
uniqArr.addUniq(mera);
uniqArr.addUniq(leyla);
uniqArr.addUniq(sara);
uniqArr.addUniq(mera);

uniqArr.forEach(e => console.log(e));
.as-console-wrapper { max-height: 100% !important; top: auto; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...