2016-12-07 69 views
5

查找和分配具有的categoryId打字稿陣列通過指數

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

categories: CategoryApi[]; 
selectedCategory: CategoryApi; 

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

一個CategoryApi對象找到元素,我發現這個JavaScript選項,但打字稿抱怨功能

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

有沒有這樣的方法findByIndex在JS,唯一的方法是findIndex

可以使用過濾找到方法,通過指數來獲得的項目:

// ES2015

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

// ES5

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

您可以使用find方法:

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

問題是,find函數不是列表在類型文件中編輯。

首先,忽略錯誤消息並嘗試它!

其次,您可以編輯的分型文件:

  1. 變化findfilter,然後按F12(去申報)
  2. 複製這條線的分型文件和函數重命名爲find和返回值爲單個對象而不是數組!
  3. 保存該文件
  4. 重命名你的代碼中的回filterfind ..