我有两个数组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 和 Underscore。
也许这样做会更好。我只需要从该数组中取出“不同”的对象。所以我可以用它来做其他事情。它并不总是最后一个元素。
更新
我也尝试过 JavaScript 数组集数学库并使用.substract
但结果相同。这一定意味着哈希值正在改变——但在我看来它们不像
为了得到这些oldArray
,newArray
我正在使用 Angular $watch。