lodash unionwith源码
时间: 2023-12-06 08:21:46 浏览: 148
好的,下面是 lodash 的 `unionWith` 方法的源码实现:
```javascript
function unionWith(...arrays) {
let comparator = last(arrays)
comparator = typeof comparator === 'function' ? comparator : undefined
arrays = castArray(flatten(arrays, 1))
return arrays.reduce((result, value) => {
if (!result.some(other => comparator(other, value))) {
result.push(value)
}
return result
}, [])
}
```
这段代码的功能是将多个数组合并成一个数组,同时去重。其中的去重逻辑由一个比较函数 `comparator` 来实现,该函数接收两个参数:当前元素和其他元素,返回一个布尔值表示它们是否相等。
首先对传入的参数进行处理,将多维数组扁平化成一维数组,并获取比较函数。然后通过 `reduce` 方法遍历数组,对于每个元素,如果在结果数组中不存在与其相等的元素,则将其添加到结果数组中。
需要注意的是,该方法不会修改原数组,而是返回一个新的数组。
阅读全文