このオブジェクトの配列(重複するオブジェクトがいくつかある)をどのように回転させることができますか?
items =
[
{ TYPEID: 150927, NAME: 'Staples', COLOR: 'Silver' },
{ TYPEID: 1246007, NAME: 'Pencils', COLOR: 'Yellow' },
{ TYPEID: 1246007, NAME: 'Pencils', COLOR: 'Blue' },
{ TYPEID: 150927, NAME: 'Staples', COLOR: 'Black' },
{ TYPEID: 1248350, NAME: 'Staples', COLOR: 'Black' },
{ TYPEID: 1246007, NAME: 'Pencils', COLOR: 'Blue' },
{ TYPEID: 150927, NAME: 'Staples', COLOR: 'Silver' },
{ TYPEID: 150927, NAME: 'Fasteners', COLOR: 'Silver' }
]
これに:
items =
[
{ TYPEID: 150927, NAME: 'Staples', COLOR: 'Silver' },
{ TYPEID: 1246007, NAME: 'Pencils', COLOR: 'Yellow' },
{ TYPEID: 1246007, NAME: 'Pencils', COLOR: 'Blue' },
{ TYPEID: 150927, NAME: 'Staples', COLOR: 'Black' },
{ TYPEID: 1248350, NAME: 'Staples', COLOR: 'Black' },
{ TYPEID: 150927, NAME: 'Fasteners', COLOR: 'Silver' }
]
... 2つの重複するオブジェクト(銀のステープルと青の鉛筆)を除外することによって?
これを行う簡単な方法があるはずですが、私はまだ簡単な解決策を見つけていません。
これを行うjavascript/jqueryコードを見たことがありますが、それらをcoffeescriptに変換するのは得意ではありません。
アップデート:
多くの場合、非常によく似たプロパティを持つさまざまなオブジェクトがあります。
実際のアプリケーションでは、各オブジェクトには25のプロパティの可能性があります。
これらの各プロパティが等しい場合にのみ、オブジェクトを削除したいと思います。
更新2
これは私のために働くことになったコードです-(rjzに感謝します)
unique = (objAry, callback) ->
results = []
valMatch = (seen, obj) ->
for other in seen
match = true
for key, val of obj
match = false unless other[key] == val
return true if match
false
objAry.forEach (item) ->
unless valMatch(results, item)
results.push(item)
callback null, results
そして、これは私がそれを呼ぶ方法です:
unique items, (err, items) ->
console.log items