Фильтрация уникальных значений массива на основе функции

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы узнаем, как создавать массив с уникальными значениями, отфильтрованными на основе функции-компаратора в 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, чтобы улучшить свои навыки.