2016-12-07 5 views
5

Suchen und ein CategoryApi Objekt zuweisen categoryId mitTyposkript Array finden Element von Index

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

categories: CategoryApi[]; 
selectedCategory: CategoryApi; 

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

fand ich diese Javascript-Option aber Typoskript beschwert sich über Funktion

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

Am einfachsten Ansatz wäre das 'selectedCategory = categories.forEach (catApi => {if (catApi.id == requiredId) gibt catApi})' zurück –

Antwort

13

Es gibt keine solche Methode findByIndex in JS, ist die einzige Methode Find.

Sie können das Filter oder die Methode finden Sie das Element durch den Index erhalten:

// ES2015

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

// ES5

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

Sie die Methode find verwenden können:

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

Das Problem ist, dass die find Funktion ist keine Liste ed in der typings-Datei.

Zuerst ignorieren Sie die Fehlermeldung und versuchen Sie es!

find mit filter und drücken Sie F12 (gehen Sie zu Deklaration)
  1. Änderung
  2. Kopie dieser Zeile in der Typisierungen-Datei und benennen Sie die Funktion find und:

    Zweitens Sie die Typisierungen-Datei bearbeiten können der zurückgegebene Wert für ein einzelnes Objekt anstelle eines Arrays!

  3. speichern die Datei
  4. Ihre filter zu find in Ihrem Code zurück umbenennen ..