私は2つの配列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]
これら2つを比較すると、次のようになります。
[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 Array Set Mathematics Libraryも試して使用.substract
しましたが、同じ結果になりました。これは、ハッシュが変化していることを意味しているに違いありませんが、私にはそのようには見えません
これらを取得するためにoldArray
、newArray
私はAngular$watchを使用しています。