反応で2つのオブジェクト配列の共通のプロパティ値を見つける

nawkee:

「items」配列:

[
            {id:1,name:"Product 1",label:"Lorem ipsum dolor sit amet, consectetur adipiscing elit",price:25},
            {id:2,name:"Product 2",label:"Lorem ipsum dolor sit amet, consectetur adipiscing elit",price:30},
            {id:3,name:"Product 3",label:"Lorem ipsum dolor sit amet, consectetur adipiscing elit",price:50},
            {id:4,name:"Product 4",label:"Lorem ipsum dolor sit amet, consectetur adipiscing elit",price:150},
            {id:5,name:"Product 5",label:"Lorem ipsum dolor sit amet, consectetur adipiscing elit",price:10}
]

「cartItems」配列:

 [
            {id:1,qty:1},
            {id:4,qty:5}
 ]

IDが両方の配列にあるアイテムのコンポーネントを作成する必要があります。私はそれを試してみました:

cartItems.map(cartItem => {
   return items.map(item => {
       if (cartItem.id === item.id) {
          return <MyComponent key={cartItem.id} />
       }
   });
})

そしてそれは動作します。しかし、このようにマップを2回使用する代わりに他の方法はありますか?

支出者:

アプローチの複雑さを改善するのに役立つ構造を作ってみましょう。

オブジェクトルックアップを使用して、すべてのカートアイテムの在庫にあるすべてのアイテムをフィルタリングする必要がないようにすることができます。最初に、ルックアップを行う関数を定義します。

const toObjectLookup = (items, keySelector) => 
    Object.fromEntries(items.map(item => [keySelector(item), item]));

そしてこれを私たちのアイテムで使用します:

const itemsById = toObjectLookup(items, item => item.id);

itemsById次のような構造にしてください

{
    "1": {
        "id": 1,
        "name": "Product 1",
        "label": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
        "price": 25
    },
    "2": {
        "id": 2,
        "name": "Product 2",
        "label": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
        "price": 30
    },
    // ...
}

これで、マッピングを改善できます

cartItems.map(cartItem => {
    const item = itemsById[cartItem.id];
    return <MyComponent key={cartItem.id} />;
})

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オブジェクトの配列である最初のプロパティを見つける方法は?

分類Dev

配列のプロパティのオブジェクトのインデックスを見つける

分類Dev

AngularJSの方法でオブジェクトの配列内のプロパティでオブジェクトを見つける

分類Dev

Typescript:2つのオブジェクト間で一致するプロパティを見つける方法

分類Dev

JS-プロパティの数が不明なオブジェクトの2つの配列間の差異を見つける

分類Dev

オブジェクトの配列で最小値を見つけて、他のプロパティを返すための最良の方法は?

分類Dev

オブジェクトの配列で値を見つける

分類Dev

一致するプロパティ値を見つける JavaScript for ループは、最初のオブジェクトの後で反復を停止します

分類Dev

プロパティ値でオブジェクトの2つの配列リストを比較します

分類Dev

JavaScriptで配列プロパティを持つ2つのオブジェクトを連結する方法は?

分類Dev

NSPredicateを使用して、配列の配列内にある特定のプロパティを持つオブジェクトを見つける方法は?

分類Dev

Scalaのオブジェクトのリストでプロパティ値を見つけます

分類Dev

Javascript-2つのプロパティでオブジェクトの配列を並べ替える

分類Dev

オブジェクトの配列を2つのプロパティで並べ替える

分類Dev

プロパティによってオブジェクトの配列の配列内の重複を見つける最短の方法

分類Dev

オブジェクトの配列のプロパティにネストするオブジェクトプロパティの値によって、オブジェクトの配列内の複数のインデックスを見つける方法は?

分類Dev

オブジェクトの配列とプロパティと値を持つオブジェクトを受け取る関数を記述します

分類Dev

Javascriptで、いくつかの条件を満たす一方で、最も価値の高い特定のプロパティを持つ配列内のオブジェクトを見つける方法

分類Dev

一致するオブジェクトプロパティで2つの配列を結合する

分類Dev

共通のプロパティを持つオブジェクトを配列から削除します

分類Dev

オブジェクトの配列から共通の値を見つけるためのlodash

分類Dev

ネストされたオブジェクトプロパティの最小値を見つける

分類Dev

$ watchは、Angularの新しいアイテムのオブジェクトの配列でプロパティの変更を見つけられません

分類Dev

オブジェクトのリスト内で同様のプロパティを見つける

分類Dev

オブジェクトのプロパティ値がオブジェクトの2つの配列で等しい場合、それらのオブジェクトを1つのオブジェクトにマージします

分類Dev

JavaScriptでオブジェクトの配列の値を見つける方法は?

分類Dev

オブジェクトの配列で属性の最大値を見つける

分類Dev

うん、オブジェクトの配列を検証すると、プロパティ=値のオブジェクトが最大で1つ含まれます

分類Dev

2つのオブジェクトのプロパティを比較して、違いを見つけますか?

Related 関連記事

  1. 1

    オブジェクトの配列である最初のプロパティを見つける方法は?

  2. 2

    配列のプロパティのオブジェクトのインデックスを見つける

  3. 3

    AngularJSの方法でオブジェクトの配列内のプロパティでオブジェクトを見つける

  4. 4

    Typescript:2つのオブジェクト間で一致するプロパティを見つける方法

  5. 5

    JS-プロパティの数が不明なオブジェクトの2つの配列間の差異を見つける

  6. 6

    オブジェクトの配列で最小値を見つけて、他のプロパティを返すための最良の方法は?

  7. 7

    オブジェクトの配列で値を見つける

  8. 8

    一致するプロパティ値を見つける JavaScript for ループは、最初のオブジェクトの後で反復を停止します

  9. 9

    プロパティ値でオブジェクトの2つの配列リストを比較します

  10. 10

    JavaScriptで配列プロパティを持つ2つのオブジェクトを連結する方法は?

  11. 11

    NSPredicateを使用して、配列の配列内にある特定のプロパティを持つオブジェクトを見つける方法は?

  12. 12

    Scalaのオブジェクトのリストでプロパティ値を見つけます

  13. 13

    Javascript-2つのプロパティでオブジェクトの配列を並べ替える

  14. 14

    オブジェクトの配列を2つのプロパティで並べ替える

  15. 15

    プロパティによってオブジェクトの配列の配列内の重複を見つける最短の方法

  16. 16

    オブジェクトの配列のプロパティにネストするオブジェクトプロパティの値によって、オブジェクトの配列内の複数のインデックスを見つける方法は?

  17. 17

    オブジェクトの配列とプロパティと値を持つオブジェクトを受け取る関数を記述します

  18. 18

    Javascriptで、いくつかの条件を満たす一方で、最も価値の高い特定のプロパティを持つ配列内のオブジェクトを見つける方法

  19. 19

    一致するオブジェクトプロパティで2つの配列を結合する

  20. 20

    共通のプロパティを持つオブジェクトを配列から削除します

  21. 21

    オブジェクトの配列から共通の値を見つけるためのlodash

  22. 22

    ネストされたオブジェクトプロパティの最小値を見つける

  23. 23

    $ watchは、Angularの新しいアイテムのオブジェクトの配列でプロパティの変更を見つけられません

  24. 24

    オブジェクトのリスト内で同様のプロパティを見つける

  25. 25

    オブジェクトのプロパティ値がオブジェクトの2つの配列で等しい場合、それらのオブジェクトを1つのオブジェクトにマージします

  26. 26

    JavaScriptでオブジェクトの配列の値を見つける方法は?

  27. 27

    オブジェクトの配列で属性の最大値を見つける

  28. 28

    うん、オブジェクトの配列を検証すると、プロパティ=値のオブジェクトが最大で1つ含まれます

  29. 29

    2つのオブジェクトのプロパティを比較して、違いを見つけますか?

ホットタグ

アーカイブ