将本机 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.extendjQuery.eachjQuery.mapjQuery.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() 选择器

jQuery event.preventDefault 的 Javascript 本机等效项 [重复]

jquery与JavaScript

如何设置本机对象属性