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 Pipeable Operators

Начиная с версии rxjs 5.5 операторы вместо цепочки вызовов применяются как параметры функции pipe.

HTML атрибуты и DOM свойства

  • Значение HTML атрибута указывает начальное значение;
  • Значение DOM свойства является текущим значением;
  • Атрибуты инициализируют DOM свойства.