gpt4 book ai didi

lodash - 如何通过所有属性从对象数组中获取唯一对象?

转载 作者:行者123 更新时间:2023-12-04 16:00:08 26 4
gpt4 key购买 nike

给定这个使用 lodash 的 typescript 代码:

import * as _ from "lodash/fp";

const range = _.range(0, 1000);
let objects = _.uniq(range.map((i) => {
let foo = "foo";
let bar = "bar";

if (i < 5) {
foo += i.toString(10);
}

if (i > 995) {
bar += i.toString(10);
}

return {
foo,
bar,
};
}));

我原以为只看到物体

{
"foo": "foo",
"bar": "bar"
}

一次,总共 10 个带有 uniq barfoo 字符串的元素。

预期输出:

[
{
"foo": "foo0",
"bar": "bar"
},
{
"foo": "foo1",
"bar": "bar"
},
{
"foo": "foo2",
"bar": "bar"
},
{
"foo": "foo3",
"bar": "bar"
},
{
"foo": "foo4",
"bar": "bar"
},
{
"foo": "foo",
"bar": "bar"
},
{
"foo": "foo",
"bar": "bar996"
},
{
"foo": "foo",
"bar": "bar997"
},
{
"foo": "foo",
"bar": "bar998"
},
{
"foo": "foo",
"bar": "bar999"
}
]

但实际上我看到所有元素都保留在列表中。就好像 _.uniq 什么也没做。

我想根据身份/平等获得数组的唯一列表。应删除所有属性组合的所有数组重复项。

我怎样才能做到这一点?

最佳答案

注意:我使用的是 lodash/fp .如果你使用 lodash , _.uniqWith 的 args 的顺序被交换了。


当你想要一个对象的唯一性时,你可以使用 _.uniqWith :

const withoutDupes = _.uniqWith(_.isEqual, objects);
console.log(
JSON.stringify(withoutDupes, null, 4),
);

关于您的第一个方法,请记住 _.uniq 不适用于对象集合,而仅适用于简单数组,例如:

const simpleArray = [1, 1, 1, 1, 2, 3];
console.log(_.uniq(simpleArray));

输出:

[ 1, 2, 3 ]

关于lodash - 如何通过所有属性从对象数组中获取唯一对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739501/

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