Введение
В этом практическом занятии мы узнаем, как создавать массив с уникальными значениями, отфильтрованными на основе функции-компаратора в JavaScript. Мы будем использовать методы Array.prototype.filter() и Array.prototype.every() для создания массива, содержащего только неуникальные значения. Это практическое занятие даст опыт в фильтрации уникальных значений массива с использованием функции-компаратора.
Фильтрация уникальных значений массива на основе функции
Вот, как создать массив, содержащий только неуникальные значения, отфильтровав уникальные на основе функции-компаратора fn:
const filterUniqueBy = (arr, fn) =>
arr.filter((v, i) => arr.some((x, j) => (i !== j) === fn(v, x, i, j)));
Для использования этой функции вызовите filterUniqueBy() с двумя аргументами: массив, который вы хотите отфильтровать, и функцию-компаратор. Функция-компаратор должна принимать четыре аргумента: значения двух сравниваемых элементов и их индексы.
Например, если у вас есть массив объектов и вы хотите отфильтровать объекты с уникальными значениями id, вы можете сделать это так:
filterUniqueBy(
[
{ id: 0, value: "a" },
{ id: 1, value: "b" },
{ id: 2, value: "c" },
{ id: 3, value: "d" },
{ id: 0, value: "e" }
],
(a, b) => a.id == b.id
); // [ { id: 0, value: 'a' }, { id: 0, value: 'e' } ]
Для начала практики в программировании откройте Терминал/SSH и введите node.
Резюме
Поздравляем! Вы завершили практическое занятие по фильтрации уникальных значений массива на основе функции. Вы можете практиковаться в других заданиях в LabEx, чтобы улучшить свои навыки.