Converting lodash _.uniqBy() to native javascript

后端 未结 4 761
傲寒
傲寒 2021-01-02 14:03

Here in this snippet i am stuck as in _.uniqBy(array,iteratee),this

  • iteratee can be a function or a string at the same time
4条回答
  •  死守一世寂寞
    2021-01-02 14:12

    You could use a sort ordered by name and a filter based on the neighborhood comparison like this :

    var sourceArray = [ { id: 1, name: 'bob' },
      { id: 1, name: 'bill' },
      { id: 1, name: 'bill' } ,
      {id: 2,name: 'silly'},
      {id: 2,name: 'billy'}]
    
    var uniqBy = (inputArray, callback) => inputArray.sort((a,b) => callback(a) > callback(b))
    .filter((x,i,arr) => i === arr.length -1 ? true : callback(x) !== callback(arr[i+1]));
    var inputFunc = item => item.name;
    
    
    var destArray = uniqBy(sourceArray, inputFunc)
    console.log('destArray', destArray)

提交回复
热议问题