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;
}, [])
}