Введение
В этом практическом занятии мы рассмотрим концепцию симметрической разности и то, как ее можно реализовать на JavaScript с использованием функции symmetricDifferenceBy(). Мы изучим, как эта функция может быть использована для нахождения уникальных значений между двумя массивами после применения заданной функции к каждому элементу обоих массивов. Это практическое занятие предназначено для того, чтобы помочь вам лучше понять этот мощный метод JavaScript и то, как его можно использовать в своих собственных проектах.
Симметрическая разность отображенного массива
Для начала работы с кодом откройте Терминал/SSH и введите node.
Эта функция возвращает симметрическую разность между двумя массивами, после применения заданной функции к каждому элементу обоих массивов. Вот, как это работает:
- Создайте
Setиз каждого массива, чтобы получить уникальные значения каждого из них после примененияfnк ним. - Используйте
Array.prototype.filter()для каждого из них, чтобы оставить только значения, не содержащиеся в другом.
Вот код для функции symmetricDifferenceBy:
const symmetricDifferenceBy = (a, b, fn) => {
const sA = new Set(a.map((v) => fn(v))),
sB = new Set(b.map((v) => fn(v)));
return [
...a.filter((x) => !sB.has(fn(x))),
...b.filter((x) => !sA.has(fn(x)))
];
};
Вы можете использовать symmetricDifferenceBy так:
symmetricDifferenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [ 1.2, 3.4 ]
symmetricDifferenceBy(
[{ id: 1 }, { id: 2 }, { id: 3 }],
[{ id: 1 }, { id: 2 }, { id: 4 }],
(i) => i.id
);
// [{ id: 3 }, { id: 4 }]
Резюме
Поздравляем! Вы завершили практическое занятие по симметрической разности отображенного массива. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.