2016-12-07 14 views
5

検索と区分活字体配列のインデックス

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

categories: CategoryApi[]; 
selectedCategory: CategoryApi; 

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

を持つCategoryApiオブジェクトを割り当てることによって、要素を見つけ、私はこのJavaScriptオプションを見つけましたが、活字体はあなたがfindメソッドを使用することができます

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 } 
+0

ほとんどの最も簡単な方法:

あなたがインデックスでアイテムを取得するためにまたは方法を見つけるフィルタを使用することができますこれは 'selectedCategory = categories.forEach(catApi => {if(catApi.id == requiredId)return catApi})' –

答えて

13

を背中filterの名前を変更する、唯一の方法は、findIndexです。

// ES2015

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

// ES5

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

機能について不平を言っている:

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

問題は、find機能がリストではないことです。 typings-fileで編集します。

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

第二に、あなたはタイピング・ファイルを編集することができます:

  1. filter変化findと、F12キーを押し(宣言に行く)
  2. コピーこのラインタイピング・ファイル内とfindに機能の名前を変更し、戻り値は配列の代わりに単一オブジェクトに返されます。
  3. 、そのファイルの保存は、このような方法JSで findByIndexはありません...あなたのコード内で find