我有两个阵列oldArray
和newArray
。当新值被放入newArray
时,我想要与oldArray
进行比较并提取新值。发现两个哈希阵列的区别
在这些数组中,我存储散列。
例如。
oldArray = []
newArray = [{"one": 1}]
我需要找到新的元素,这是{"one": 1}
使用underscore.js我可以做这样的事情:
newElement = _.difference(newValue, oldValue)
这工作正常的第一次,但是当我回去并向阵列添加更多:
oldArray = [{"one": 1}]
newArray = [{"one": 1},{"two": 2}]
而且做同样的事newElement = _.difference(newValue, oldValue)
我得到[{"one": 1},{"two": 2}]
作为新对象回来......是因为我在比较对象而不是数值吗?有一个更好的方法吗。
以上是一个例子,但离我的应用我从控制台
oldValue map.js:85
[Object]
0: Object
$$hashKey: "007"
address: "england"
latLng: GeoCode
__proto__: Object
length: 1
__proto__: Array[0]
newValue map.js:83
[Object, Object]
0: Object
$$hashKey: "007"
address: "england"
latLng: GeoCode
__proto__: Object
1: Object
$$hashKey: "009"
address: "france"
latLng: GeoCode
__proto__: Object
length: 2
__proto__: Array[0]
当我比较这两个,我会被拉这样的:
[Object, Object]
0: Object
$$hashKey: "007"
address: "england"
latLng: GeoCode
__proto__: Object
1: Object
$$hashKey: "009"
address: "france"
latLng: GeoCode
__proto__: Object
length: 2
__proto__: Array[0]
我使用AngularJS并强调在这个项目目前。
也许有这样做更好。我只需要从该数组中取出“不同”对象。所以我可以用它来做其他事情。它并不总是最后一个元素。
UPDATE
我也试过JavaScript的数组设置数学库,并使用.substract
但具有相同的结果。这意味着哈希正在改变 - 但它们看起来不像我
为了得到这些oldArray
和newArray
我正在使用Angular $ watch。
你能提供一个像jsfiddle.net这样的简化测试用例吗? – Dogbert 2013-02-24 16:23:02