gpt4 book ai didi

javascript - 将 lodash _.uniqBy() 转换为原生 javascript

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:36 24 4
gpt4 key购买 nike

在这段代码中,我被困在了 _.uniqBy(array,iteratee),this

  • iteratee 可以是函数,也可以是字符串
  • 在哪里放置条件以检查属性的唯一性,因为 itratee 函数可以是任何东西

var sourceArray = [ { id: 1, name: 'bob' },
{ id: 1, name: 'bill' },
{ id: 1, name: 'bill' } ,
{id: 2,name: 'silly'},
{id: 2,name: 'billy'}]

function uniqBy (inputArray, callback) {
return inputArray.filter(callback)
}
var inputFunc = function (item) {
return item.name
}

// var destArray = _.uniqBy(sourceArray,'name')

var destArray = uniqBy(sourceArray, inputFunc)
console.log('destArray', destArray)

我们将不胜感激任何线索。

最佳答案

使用 Map 的 ES6 uniqBy复杂度为 O(n):

const uniqBy = (arr, predicate) => {
const cb = typeof predicate === 'function' ? predicate : (o) => o[predicate];

return [...arr.reduce((map, item) => {
const key = (item === null || item === undefined) ?
item : cb(item);

map.has(key) || map.set(key, item);

return map;
}, new Map()).values()];
};

const sourceArray = [
{ id: 1, name: 'bob' },
{ id: 1, name: 'bill' },
null,
{ id: 1, name: 'bill' } ,
{ id: 2,name: 'silly'},
{ id: 2,name: 'billy'},
null,
undefined
];

console.log('id string: ', uniqBy(sourceArray, 'id'));

console.log('name func: ', uniqBy(sourceArray, (o) => o.name));

关于javascript - 将 lodash _.uniqBy() 转换为原生 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40801349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com