一天一個仿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;
  }, [])
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章