array/difference.jsjavascript
/**
* 返回首个数组中未出现在其余数组里的唯一值。
* @function difference
* @memberof module:array
* @param {Array} array 基准数组
* @param {...Array} others 用于排除值的数组
* @returns {Array} 差集数组
* @throws {TypeError} 任一参数不是数组时抛出
*/
function difference(array, ...others) {
if (!Array.isArray(array) || others.some(item => !Array.isArray(item))) {
throw new TypeError('all arguments must be arrays')
}
const excluded = new Set(others.flat())
return [...new Set(array.filter(value => !excluded.has(value)))]
}
export default difference