2016-12-07 27 views
5

Finding và gán một đối tượng CategoryApi có categoryIdnguyên cảo Mảng tìm phần tử bằng cách chỉ số

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

categories: CategoryApi[]; 
selectedCategory: CategoryApi; 

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

tôi thấy tùy chọn javascript này nhưng nguyên cảo được phàn nàn về chức năng

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

Hầu hết các phương pháp đơn giản nhất sẽ là 'selectedCategory = categories.forEach (catApi => {if (catApi.id == requiredId) trả về catApi}) ' –

Trả lời

13

Không có phương pháp như vậy findByIndex trong JS, phương pháp duy nhất là findIndex.

Bạn có thể sử dụng bộ lọc hoặc tìm phương pháp để có được những mục bằng chỉ số:

// ES2015

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

// ES5

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

Bạn có thể sử dụng phương pháp tìm:

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

Vấn đề là, chức năng find không có trong danh sách ed trong tập tin đánh máy.

Trước tiên, hãy bỏ qua thông báo lỗi và dùng thử!

Thứ hai, bạn có thể chỉnh sửa các typings-file:

  1. thay đổi find với filter và nhấn F12 (đi đến tuyên bố)
  2. copy dòng này trong typings-file và đổi tên các chức năng để find và giá trị trả về cho một đối tượng thay vì một mảng!
  3. tiết kiệm tập tin
  4. rằng đổi tên trở lại của bạn filter để find trong mã của bạn ..
Các vấn đề liên quan