我正在尝试在数组中找到完全匹配。我的数组array
包含一个对象,并且存储在example
中的完全匹配。当我遍历array
数组时,它会越过它。我在使用更大的阵列时发现了这一点,但是为了某种“概念证明”而将其分解为1/1关系。我觉得答案很简单,盯着我,但我没有看到。救救我。
'use strict';
var array = [ { foo: 'hello', bar: 'foo' } ];
var example = { foo: 'hello', bar: 'foo' };
for (var i = 0; i < array.length; i++) {
if ( array[i] === example ) {
console.log(array[i]);
}
}
答案 0 :(得分:0)
您可以像这样比较对象:
JSON.stringify(obj1) === JSON.stringify(obj2)
在你的情况下,你会寻找:
var array = [ { foo: 'hello', bar: 'foo' } ];
var example = { foo: 'hello', bar: 'foo' };
for (var i = 0; i < array.length; i++) {
if ( JSON.stringify(array[i]) === JSON.stringify(example) ) {
console.log(array[i]);
}
}
您无法按照您的方式比较对象,因为您正在比较实例。
我应该注意,这种比较对象的方式非常有限,只有当属性共享相同的顺序,并且不包含函数等时才有效。您可以对属性顺序进行排序,或者将更深层次的等同性与任何流行顺序进行比较可在此处找到的解决方案:Object comparison in JavaScript
答案 1 :(得分:0)
考虑使用_.isEqual
或underscore.js
for (var i = 0; i < array.length; i++) {
if ( _.isEqual(array[i], example) ) {
console.log(array[i]);
}
}
fruits