ES6. Union, intersection, difference

const a = ['html', 'css', 'js'],
    b = ['js', 'php', 'python'],
    union = [...new Set([...a, ...b])], // 'html','css', 'js', 'php', 'python'
    intersection = a.filter(x => b.includes(x)), // 'js'
    difference = a.filter(x => !b.includes(x)), // 'html','css'
    symdifference = [...a.filter(x => !b.includes(x)), ...b.filter(x => !a.includes(x))]; // 'html','css', 'php', 'python'

Альтернатива symdifference

[...a,...b].filter(x=>!(a.includes(x) && b.includes(x)))

Похожие записи

Поисковый запрос с помощью RxJS

Показательная и востребованная задача. Получение набираемого запроса из поля ввода через полсекунды после того, как пользователь закончил ввод с показом лоадера.

Builder в JS

Builder (cтроитель) - порождающий шаблон программирования. Применяется для создания сложных объектов при помощи цепочки методов someBuilder->setValueA(1)->setValueB(2)->build()