例如:
let arr = [
{a: 1, b: 2},
{b: 2, a: 1},
{a: 1, b: 2, c: {a: 1, b: 2}},
{b: 2, a: 1, c: {b: 2, a: 1}}
]
要求对象比较是全键比较,不是基于某个键,而且是深度比较。
例如:
let arr = [
{a: 1, b: 2},
{b: 2, a: 1},
{a: 1, b: 2, c: {a: 1, b: 2}},
{b: 2, a: 1, c: {b: 2, a: 1}}
]
要求对象比较是全键比较,不是基于某个键,而且是深度比较。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
要实现对象数组进行全键深度比较去重,可以考虑使用以下方法:
以下是一个示例,实现了一个
deepEqual
函数进行对象的深度比较和一个uniqueArray
函数进行对象数组去重:在这个示例中,我们首先实现了一个
deepEqual
函数用于比较两个对象是否相等。然后,我们使用uniqueArray
函数来过滤数组,保留唯一的对象。这个方法的时间复杂度是O(n^2),其中n是数组的长度。这个方法在处理小型数据集时表现良好,但在处理大型数据集时可能效率较低。如果对象的属性顺序保持一致,可以考虑使用以下方法:
这种方法将对象转换为字符串,并使用
Set
来存储已经处理过的字符串。这种方法的时间复杂度是O(n),其中n是数组的长度。这种方法在处理大型数据集时效率较高,但需要确保对象的属性顺序一致。