Typescript Элемент поиска массива по индексу

Поиск и назначение объекта CategoryApi с категориейId

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 }

Ответ 1

В JS нет такого метода findByIndex, единственным методом является findIndex.

Вы можете использовать метод фильтр или find, чтобы получить элемент по индексу:

//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 не указана в файле typings.

Во-первых, проигнорируйте сообщение об ошибке и попробуйте!

Во-вторых, вы можете отредактировать файл typings:

  • измените find на filter и нажмите F12 (перейти к объявлению)
  • скопируйте эту строку в файл-типизацию и переименуйте функцию в find и возвращаемое значение в один объект вместо массива!
  • сохранить этот файл
  • переименуйте обратно filter в find в свой код.

Ответ 3

Чтобы получить конкретные значения параметров. Используйте этот код

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

Где CategoryId может быть любое поле, которое вы хотите