将本机javascript对象与jQuery进行比较

Rus*_*ell 12 javascript jquery

可能重复:
JavaScript中的对象比较

我有两个本机JavaScript对象:

var foo = { hello: 'world', holy: { shit: 'batman' } };
var bar = { ... };
Run Code Online (Sandbox Code Playgroud)

我想比较两个(foo == bar).

小智 6

这很有效,但仅在某些情况下:

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
Run Code Online (Sandbox Code Playgroud)

  • 使用`JSON.stringify`比较对象*有时*只能工作,因为键的顺序没有明确定义.这个属性恰好在这个例子中以相同的顺序迭代 - 并且在测试的特定实现中 - 但是*这个行为是未定义的,不应该使用*. (4认同)

RMo*_*sey 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