gpt4 book ai didi

javascript - 使用 underscore.js 比较两个具有未定义值的对象

转载 作者:行者123 更新时间:2023-11-29 21:16:41 24 4
gpt4 key购买 nike

我尝试使用 underscore.js 比较两个对象,如果它们相同,我想返回 true。为此,我使用了 _.isEqual()。

var a = {0: "2", 1: "11", 2: "1"}
var b = {0: "2", 1: "11", 2: "1"}
_.isEqual(a, b) // returns true

这按预期工作。我遇到的问题是我可能在给定时间没有来自一个对象的所有数据。让我们使用这个例子:

var a = {0: "2", 1: undefined, 2: undefined}
var b = {0: "2", 1: "11", 2: "1"}
_.isEqual(a, b) // returns false

如果比较的某些值未定义,我想要一种方法(显然不使用 ._isEqual)返回 true。有什么想法吗?

最佳答案

这是一个解决方案,它首先计算出哪些公共(public)键具有定义的值,然后使用 _.isEqual进行比较:

var a = {0: "2", 1: undefined, 2: undefined}
var b = {0: "2", 1: "11", 2: "1"}

// helper predicate that returns true if the value passed to it is undefined
var notUndefined = _.negate(_.isUndefined);

// find the common keys that have defined values
var keys = _.intersection(_.keys(_.pick(a,notUndefined)), _.keys(_.pick(b,notUndefined)))

// compare only the common keys
var result = _.isEqual( _.pick(a, keys), _.pick(b, keys) );

注意这仅在您的对象包含原始类型(无嵌套对象或数组)时才有效

关于javascript - 使用 underscore.js 比较两个具有未定义值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39159486/

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