将本机 javascript 对象与 jQuery 进行比较 [重复]
Posted
技术标签:
【中文标题】将本机 javascript 对象与 jQuery 进行比较 [重复]【英文标题】:Comparing native javascript objects with jQuery [duplicate] 【发布时间】:2011-04-17 00:45:39 【问题描述】:可能重复:Object comparison in javascript
我有两个原生 JavaScript 对象:
var foo = hello: 'world', holy: shit: 'batman' ;
var bar = ... ;
我想比较两者(foo == bar)。
【问题讨论】:
这里有一个讨论:http://***.com/questions/1068834/object-comparison-in-javascript 【参考方案1】:jQuery 没有用于比较对象的内置实用程序。从您的帖子中并不清楚您想从两个对象中获得什么信息。您要对它们进行排序吗?
不过,根据您要执行的操作,您可能能够通过使用 jQuery 的一种实用方法来满足您的用例。例如,请参阅:jQuery.extend
、jQuery.each
、jQuery.map
和 jQuery.merge
。 jQuery 主要关注操作 DOM 元素;它没有用于列表排序的内置功能(尽管您可能能够找到插件)。
查看 jQuery 实用程序文档:
http://api.jquery.com/category/utilities/
另外,请查看array.sort()
,它显然是内置在 javascript 中的:
http://www.javascriptkit.com/javatutors/arraysort.shtml
【讨论】:
【参考方案2】:这很好用,但仅在某些情况下:
var obj1 = n1: "v1", n2: "v2",
obj2 = n1: "v1", n2: "v2",
obj3 = n2: "v2", n1: "v1",
obj4 = n2: "v2", n1: "v1", f: function();
// this will work correctly:
JSON.stringify(obj1) == JSON.stringify(obj2); //true
// but this fails :(
JSON.stringify(obj2) == JSON.stringify(obj3); //false
// and this :(
JSON.stringify(obj3) == JSON.stringify(obj4); //true
【讨论】:
将对象与JSON.stringify
比较仅在某些时候起作用,因为键的顺序没有明确定义。在此示例中,属性恰好以相同的顺序迭代 - 并且在测试的特定实现中 - 但 此行为未定义且不应使用。
我认为可以修改这种方法(例如,按排序顺序使用键序列化对象)以解决 pst 描述的问题,不是吗?
关注@user166390。仅当对象不包含函数、DOM 节点并且字段的顺序保持不变时,此方法才有效。它在比较来自某些 API 的 JSON 时起作用。但是,如果您比较自己创建的对象,为什么不使用唯一 ID?以上是关于将本机 javascript 对象与 jQuery 进行比较 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavascriptCore C Api 绑定本机对象
jQuery - 如何将 DOM 元素和 Javascript 对象链接在一起?
本机 javascript 等效于 jQuery :contains() 选择器