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 может быть любое поле, которое вы хотите