使用下划线比较两个未定义值的对象
Comparing two objects with undefined values using underscore.js
使用下划线。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如果比较的一些值是未定义的。什么好主意吗?
这里有一个解决方案,它首先计算出哪些公共键具有已定义的值,然后使用_。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) );
注意:只有当你的对象包含基本类型(没有嵌套的对象或数组)
相关文章:
- 在同一页面中使用两个版本的jquery将返回'未定义不是函数'
- 不能在javascript中定义两个var
- 定义两个具有相同参数的变量
- 当我尝试两个 DOM 中的 get 元素时,HTML 和 Xpath 结果未定义
- 将字符串拆分为两个变量 - 未定义不是一个函数
- jQuery按两个变量过滤,其中一个可能未定义
- Argument Controller不是一个函数,未定义-一个页面中有两个Angular应用程序
- 如何检查属性的null和未定义的两个值
- JavaScript:定义两个类之间的距离
- 为什么't两个变量都未定义
- 无法在主干视图中定义两个事件
- 如何使用AngularJs在html中定义两个模型
- Javascript:在对象调用中使用由两个表单字段值串联而成的变量作为属性,结果是未定义的
- 检查两个变量是否未定义
- 如何在指令中定义两个ng-click函数
- 用Parse JavaScript定义两个用户之间的相互关系
- Jquery两个脚本未定义
- Javascript:两个if类型的未定义语句给出不同的结果
- 路由未定义在谷歌地图API,而发现两个地方之间的持续时间
- 如何在一个变量中定义两个类