typescript-別の配列に基づくオブジェクトのフィルター配列

バージョン2

私は以下のようなオブジェクトの配列を持っています

  readonly allItems = [
    {
      id: 0,
      title: "Item 0",
      belongsTo: 'admin'
    },
    {
      id: 1,
      title: "Item 1",
      belongsTo: 'user'
    },
    {
      id: 2,
      title: "Item 2",
      belongsTo: 'all'
    },
    {
      id: 3,
      title: "Item 3",
      belongsTo: 'user'
    },
    {
      id: 4,
      title: "Item 4",
      belongsTo: 'all'
    }
  ];

そして、私は以下のような数字の配列を持っています

let selItems = [0,2,4];

私がやろうとしているのは、allItems配列に基づい配列をフィルタリングすることです。selItemsそのために、次のコードを記述しましたが、これは明らかに間違っています。

  for(let i=0; i< this.allItems.length; i++){
      if(selItems.includes(this.allItems[i].id)){
        tempMenu.push(this.allItems[i]);
      }
      console.log(tempMenu);
    }

以下を出力として取得しています

[{
      id: 0,
      title: "Item 0",
      belongsTo: 'admin'
}]

私が期待している結果は次のようになります。

  [
    {
      id: 0,
      title: "Item 0",
      belongsTo: 'admin'
    },
    {
      id: 2,
      title: "Item 2",
      belongsTo: 'all'
    },
    {
      id: 4,
      title: "Item 4",
      belongsTo: 'all'
    }
  ]

誰かが私にこれを行う正しい方法を教えてもらえますか?ありがとう!

特定のパフォーマンス

.map代わりに次のものを使用できます

const allItems = [{
    id: 0,
    title: "Item 0",
    belongsTo: 'admin'
  },
  {
    id: 1,
    title: "Item 1",
    belongsTo: 'user'
  },
  {
    id: 2,
    title: "Item 2",
    belongsTo: 'all'
  },
  {
    id: 3,
    title: "Item 3",
    belongsTo: 'user'
  },
  {
    id: 4,
    title: "Item 4",
    belongsTo: 'all'
  }
];
const selItems = [0, 2, 4];

const output = selItems.map(num => allItems.find(({ id }) => id === num));
console.log(output);

計算の複雑さをのO(N)代わりに減らすためにO(N^2)id最初にインデックスが付けられたオブジェクトに変換できます

const allItems = [{
    id: 0,
    title: "Item 0",
    belongsTo: 'admin'
  },
  {
    id: 1,
    title: "Item 1",
    belongsTo: 'user'
  },
  {
    id: 2,
    title: "Item 2",
    belongsTo: 'all'
  },
  {
    id: 3,
    title: "Item 3",
    belongsTo: 'user'
  },
  {
    id: 4,
    title: "Item 4",
    belongsTo: 'all'
  }
];
const selItems = [0, 2, 4];

const allItemsById = allItems.reduce((a, item) => {
  a[item.id] = item;
  return a;
}, {});

const output = selItems.map(num => allItemsById[num]);
console.log(output);

またはとfilter

const allItems = [{
    id: 0,
    title: "Item 0",
    belongsTo: 'admin'
  },
  {
    id: 1,
    title: "Item 1",
    belongsTo: 'user'
  },
  {
    id: 2,
    title: "Item 2",
    belongsTo: 'all'
  },
  {
    id: 3,
    title: "Item 3",
    belongsTo: 'user'
  },
  {
    id: 4,
    title: "Item 4",
    belongsTo: 'all'
  }
];
const selItemsSet = new Set([0, 2, 4]);

const output = allItems.filter(({ id }) => selItemsSet.has(id));
console.log(output);

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

別の配列からの値に基づくTypescriptフィルター配列

分類Dev

オブジェクトを含む別の配列に基づく文字列を含む配列[JS / TypeScript]

分類Dev

Typescript内のオブジェクトのネストされた配列の値に基づいてフィルタリング

分類Dev

Typescriptのパラメータに基づいてjsonオブジェクト値の配列を追加する

分類Dev

typescriptのプロパティに基づいてオブジェクトの配列を並べ替えます

分類Dev

配列typescript内のオブジェクトからデータをフィルタリングする

分類Dev

オブジェクトの配列の配列のTypescript配列

分類Dev

Typescriptのオブジェクトの配列に基づいてオブジェクトタイプを作成します

分類Dev

オブジェクトに基づくTypeScriptの特定の文字列値

分類Dev

別の配列の値に基づくTypescript順序配列

分類Dev

Typescriptはオブジェクトの2つの配列をフィルタリングします

分類Dev

オブジェクトの別の配列に基づくJavascriptフィルター配列

分類Dev

Typescript-複数の値に従って配列内のオブジェクトをグループ化し、フィルタリングします

分類Dev

Typescript-フィールド値でオブジェクトの2つの配列を結合します

分類Dev

Typescriptはオブジェクトの配列をフィルタリングします

分類Dev

Javascript / Typescriptのオブジェクトの配列へのデータセット

分類Dev

配列内のオブジェクトのフィールドに対するTypeScriptの厳密なnullチェック

分類Dev

配列からオブジェクトへのTypeScriptタイプ

分類Dev

オブジェクトの配列に基づくMondoDBフィルター

分類Dev

JSONオブジェクトの配列をインターフェースAngular / Typescriptの配列に割り当てます

分類Dev

Typescriptでconitionオブジェクトを使用してネストされた配列の配列をフィルタリングする

分類Dev

TypeScriptの連想オブジェクト配列のインターフェース

分類Dev

JSONオブジェクトの配列をTypeScriptオブジェクトの配列に解析します

分類Dev

Typescriptパラメータ-オブジェクトのジェネリック配列とオブジェクトのキーの配列(部分的)

分類Dev

配列ではなく任意のオブジェクトに一致するTypeScriptタイプ

分類Dev

Typescriptは、インターフェイスに基づいて、別のオブジェクトからオブジェクトを作成します

分類Dev

Typescriptのオブジェクトの配列にテキストファイルを読み込みます

分類Dev

オブジェクトの配列とインターフェイスを備えたTypescript交差型

分類Dev

javascriptで複数の配列を持つ別のオブジェクトのフィルタリングに基づくフィルター配列

Related 関連記事

  1. 1

    別の配列からの値に基づくTypescriptフィルター配列

  2. 2

    オブジェクトを含む別の配列に基づく文字列を含む配列[JS / TypeScript]

  3. 3

    Typescript内のオブジェクトのネストされた配列の値に基づいてフィルタリング

  4. 4

    Typescriptのパラメータに基づいてjsonオブジェクト値の配列を追加する

  5. 5

    typescriptのプロパティに基づいてオブジェクトの配列を並べ替えます

  6. 6

    配列typescript内のオブジェクトからデータをフィルタリングする

  7. 7

    オブジェクトの配列の配列のTypescript配列

  8. 8

    Typescriptのオブジェクトの配列に基づいてオブジェクトタイプを作成します

  9. 9

    オブジェクトに基づくTypeScriptの特定の文字列値

  10. 10

    別の配列の値に基づくTypescript順序配列

  11. 11

    Typescriptはオブジェクトの2つの配列をフィルタリングします

  12. 12

    オブジェクトの別の配列に基づくJavascriptフィルター配列

  13. 13

    Typescript-複数の値に従って配列内のオブジェクトをグループ化し、フィルタリングします

  14. 14

    Typescript-フィールド値でオブジェクトの2つの配列を結合します

  15. 15

    Typescriptはオブジェクトの配列をフィルタリングします

  16. 16

    Javascript / Typescriptのオブジェクトの配列へのデータセット

  17. 17

    配列内のオブジェクトのフィールドに対するTypeScriptの厳密なnullチェック

  18. 18

    配列からオブジェクトへのTypeScriptタイプ

  19. 19

    オブジェクトの配列に基づくMondoDBフィルター

  20. 20

    JSONオブジェクトの配列をインターフェースAngular / Typescriptの配列に割り当てます

  21. 21

    Typescriptでconitionオブジェクトを使用してネストされた配列の配列をフィルタリングする

  22. 22

    TypeScriptの連想オブジェクト配列のインターフェース

  23. 23

    JSONオブジェクトの配列をTypeScriptオブジェクトの配列に解析します

  24. 24

    Typescriptパラメータ-オブジェクトのジェネリック配列とオブジェクトのキーの配列(部分的)

  25. 25

    配列ではなく任意のオブジェクトに一致するTypeScriptタイプ

  26. 26

    Typescriptは、インターフェイスに基づいて、別のオブジェクトからオブジェクトを作成します

  27. 27

    Typescriptのオブジェクトの配列にテキストファイルを読み込みます

  28. 28

    オブジェクトの配列とインターフェイスを備えたTypescript交差型

  29. 29

    javascriptで複数の配列を持つ別のオブジェクトのフィルタリングに基づくフィルター配列

ホットタグ

アーカイブ