一天一个仿lodash函数实现-uniq
uniq数组去重,只保留第一次出现的元素,也就是要保证元素的顺序,刚实现的union利用数组遍历来做,实际uniq也可以这么搞。
function uniq(arr){
return arr.reduce((pre, cur)=>{
if(!pre.includes(cur)) {
pre.push(cur)
}
return pre;
}, [])
}
function uniqBy(arr, it){
const iteratee = typeof it === 'string'?val=>val[it]:it;
return arr.reduce((pre, cur)=>{
if(!pre.some(item=>iteratee(item)===iteratee(cur))) {
pre.push(cur)
}
return pre;
}, [])
}
function uniqWith(arr, comparator){
return arr.reduce((pre, cur)=>{
if(!pre.some(item=>comparator(item,cur))) {
pre.push(cur)
}
return pre;
}, [])
}