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

Beginner

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

Введение

В этом практическом занятии мы изучим функцию JavaScript, которая фильтрует неуникальные значения массива на основе предоставленной функции сравнения. Используя Array.prototype.filter() и Array.prototype.every(), мы создадим новый массив, содержащий только уникальные значения на основе функции сравнения. Эта лабораторная работа направлена на улучшение вашего понимания методов массивов JavaScript и способов их использования для манипуляции данными.

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

Для начала практики программирования откройте Терминал/SSH и введите node.

Этот код фильтрует неуникальные значения из массива на основе предоставленной функции сравнения. Вот шаги, чтобы достичь этого:

  1. Используйте Array.prototype.filter() и Array.prototype.every() для создания нового массива с только уникальными значениями на основе функции сравнения fn.
  2. Функция сравнения принимает четыре аргумента: значения двух элементов, которые сравниваются, и их индексы.
  3. Функция filterNonUniqueBy реализует вышеперечисленные шаги и возвращает массив уникальных значений.
const filterNonUniqueBy = (arr, fn) =>
  arr.filter((v, i) => arr.every((x, j) => (i === j) === fn(v, x, i, j)));

Вот пример использования этой функции:

filterNonUniqueBy(
  [
    { id: 0, value: "a" },
    { id: 1, value: "b" },
    { id: 2, value: "c" },
    { id: 1, value: "d" },
    { id: 0, value: "e" }
  ],
  (a, b) => a.id === b.id
); // [ { id: 2, value: 'c' } ]

Этот код прост, понятен и последователен и должен работать, как ожидается.

Резюме

Поздравляем! Вы завершили практическую работу "Фильтрация неуникальных значений массива с использованием функции". Вы можете выполнить больше практических работ в LabEx, чтобы улучшить свои навыки.