web-dev-qa-db-fra.com

Tableau de typescript rechercher élément par index

Recherche et affectation d'un objet CategoryApi ayant categoryId

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

categories: CategoryApi[];
selectedCategory: CategoryApi;

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

J'ai trouvé cette option javascript mais TypeScript se plaint de la fonction

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 }
8
Exec21

Il n’existe pas de méthode findByIndex dans JS, la seule méthode est findIndex .

Vous pouvez utiliser le filtre filter ou la méthode find pour obtenir l'élément par index:

// ES2015

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

// ES5

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

Vous pouvez utiliser la méthode find:

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

Le problème est que la fonction find n'est pas listée dans le fichier typings.

Tout d'abord, ignorez le message d'erreur et essayez-le!

Deuxièmement, vous pouvez éditer le fichier de typages:

  1. changez find avec filter et appuyez sur F12 (allez à la déclaration)
  2. copiez cette ligne dans le fichier typings et renommez la fonction en find et la valeur renvoyée en objet unique au lieu d'un tableau
  3. enregistrer ce fichier
  4. renommez votre retour filter en find dans votre code.
2
mxii