web-dev-qa-db-ja.com

Typescript配列はインデックスで要素を検索します

CategoryIdを持つCategoryApiオブジェクトを見つけて割り当てる

export class CategoryApi {
    categoryId: number;
    name: string;
}

categories: CategoryApi[];
selectedCategory: CategoryApi;

selectedCategory = categories.findByIndex(2); //looking for categoryApi by categoryId = 2

私はこのjavascriptオプションを見つけましたが、TypeScriptは機能について不平を言っています

var inventory = [
    {name: 'apples', quantity: 2},
    {name: 'bananas', quantity: 0},
    {name: 'cherries', quantity: 5}
];

function findCherries(fruit) { 
    return fruit.name === 'cherries';
}

console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }
11
Exec21

そのようなメソッドはありませんfindByIndex JSでは、唯一のメソッドはfindIndexです。

filterまたはfindメソッドを使用して、インデックスでアイテムを取得できます。

// ES2015

selectedCategory = categories.find(item => item.categoryId === 1);

// ES5

selectedCategory = categories.filter(item => item.categoryId === 1)[0];
21
Bazinga

Findメソッドを使用できます:

selectedCategory = categories.find(c => c.categoryApi == 2);

問題は、find関数がtypings-fileにリストされていないことです。

まず、エラーメッセージを無視して試してください!

次に、タイピングファイルを編集できます。

  1. findfilterを変更し、F12を押します(宣言に移動)
  2. typings-fileのこの行をコピーし、関数の名前をfindに変更し、戻り値を配列ではなく単一オブジェクトに変更してください!
  3. そのファイルを保存する
  4. コードのfilterfindに変更します。
2
mxii

特定のパラメーター値を取得します。このコードを使用

this.categories.find(item => item.categoryId === 1).categoryId 

Where categoryIdには任意のフィールドを指定できます

2
ammad khan