2016-05-19 8 views
0

買い物かごを不変構造に変換しています。ImmutableJs - オブジェクトを1つのプロパティと比較します。

不変オブジェクトが不変リスト内にすでに存在するかどうかを確認する簡単な方法はありますか?リスト例:

[{ 
    id: 1, 
    name: 'fish and chips', 
    modifiers: [ 
    { 
     id: 'mod1', 
     name: 'Extra chips' 
    } 
    ], 
    quantity: 2 
},{ 
    id: 2, 
    name: 'burger and chips', 
    modifiers: [ 
    { 
     id: 'mod1', 
     name: 'No salad' 
    } 
    ], 
    quantity: 1 
}] 

ここで、リストに入れるオブジェクトがもう1つあるとします。しかし、修飾語付きのこの正確なアイテムが既にリストに存在するかどうか確認したいのですか?私はちょうどlist.findIndex(item => item === newItem)をすることができますが、可能性のある異なる量のプロパティのために、それは働かないでしょう。 ===一つのプロパティから離れてチェックする方法はありますか?または、それらが同じかどうかを確認するために、すべてのプロパティ(量を除いて)をループする必要なく、これを行う方法はありますか?

現在、私はすべての項目を通過し、すべてのプロパティをチェックして同じかどうかを確認するためにひどい入れ子ループを持っています。

+0

お使いのモデルで正確に何を検索したいのですか? – hazardous

+0

@HazardouSああもちろん、更新された –

答えて

1

まあこれは

list.findIndex(item => item.delete("quantity").equals(newItem.delete("quantity"))

equals方法ない深い値の比較をワーク・すべきです。したがって、数量を削除すると、重要なすべての値が比較されます。

PS:コードフォーマットを無視してください、私はSOアプリです。

PPS:上記のコードは最適ではありません。トリムされていないnewItemを矢印関数内でトリミングする代わりに比較する必要があります。

+0

また、一意に見えるIDを削除します。 – hazardous

+0

良いアイデア、これはうまくいく、感謝 –

+1

がうまく動作するように見える、仲間の仲間、20行のコードがなくなった。 –

関連する問題