gpt4 book ai didi

json - 使用 Rxjs 不同运算符将整个对象与嵌套进行比较

转载 作者:行者123 更新时间:2023-12-02 01:04:26 24 4
gpt4 key购买 nike

我有一个 observable,它向我传递一个 json 对象,我在该对象上使用了 distinct 运算符。
如果整个对象与以前相同,我不想有重复项。我不能只使用像 id 这样的单一比较器,因为它的 id 可能相同但它的内容不同。

所以我目前正在对对象进行字符串化,然后使用 distinct 并且它工作正常

有一个更好的方法吗?

someObservable
.startWith(cachedCopy)
.map(item => JSON.stringify(item))
.distinct()
.subscribe(item => {
//I do some stuff!
})

最佳答案

其实我想用 JSON.stringify()比较两个对象是否包含相同的数据是最简单的方法。如果您知道对象标识必须不同,您可以使用 pairwise().filter(pair => pair[0] !== pair[1]) (这些必须是两个不同的对象实例)但这实际上取决于您的用例以及您是否可以保证这样的条件(通常不是在我的个人经验中并且比较 JSON 是“足够好”)。

请注意 distinct()自从创建链以来,只传递真正不同的项目,但在您的描述中,您说“如果整个对象与以前相同,则重复”,这似乎您应该使用 distinctUntilChanged反而。
distinctUntilChanged运算符将一个比较器函数作为可选参数,您可以使用它来检查两个对象是否相同:

.distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))

关于json - 使用 Rxjs 不同运算符将整个对象与嵌套进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48596405/

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