我需要像这样比较2个json对象:(这是谷歌Chrome控制台输出)
Object {brand: "Marca A", type: "Tipo A", model: "Modelo A", color: "Color A", hand: "Mano A"…}
_id: "534664b081362062015d1b77"
brand: "Marca A"
color: "Color A"
hand: "Mano A"
model: "Modelo A"
price: "11,11"
type: "Tipo A"
__proto__: Object
__defineGetter__: function __defineGetter__() { [native code] }
__defineSetter__: function __defineSetter__() { [native code] }
__lookupGetter__: function __lookupGetter__() { [native code] }
__lookupSetter__: function __lookupSetter__() { [native code] }
constructor: function Object() { [native code] }
hasOwnProperty: function hasOwnProperty() { [native code] }
isPrototypeOf: function isPrototypeOf() { [native code] }
propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
valueOf: function valueOf() { [native code] }
get __proto__: function __proto__() { [native code] }
set __proto__: function __proto__() { [native code] }
我尝试过使用stringfy,angular.equals,下划线但总是返回我的假..我想做一些比较复杂的事情,比较Json的字段,它可能吗?
答案 0 :(得分:3)
angular.equals(o1, o2) 应该完成这项工作,如果结果为false
,那么某些属性就不相同了。
答案 1 :(得分:1)
是一个过度结构,但是非常有帮助,尝试整合"下划线"在您的项目上,比较您可以使用的对象http://underscorejs.org/#isEqual。
答案 2 :(得分:-1)
最简单的方法是使用Stringify JSON.stringify将对象更改为字符串并进行比较。
function isSame(o1, o2)
{
return JSON.stringify(o1) !== JSON.stringify(o2);
}
但是,对于结构不同的相等JSON对象,此方法将失败,例如:
JSON.stringify({a:1,b:2}) == JSON.stringify({b:2,a:1}) // returns false
要解决此问题,您可以使用深层比较,如Object comparison in JavaScript
的答案所示但是,您也可以使用underscore.js而不是重新发明轮子。它有一个比较对象的函数isEqual()。
_.isEqual(o1, o2);