2017-01-27 4 views
0

Ich versuche, eine Funktion zu erstellen, die ein bestimmtes Objekt in einem Array zurückgibt. Ich habe am Ende eine Funktion in die Funktion eingefügt und bin mir nicht sicher, ob das sauber ist. Hier ist der Code:Aufräumen der "Suche" -Funktion

const getTeam = (teams, teamId) => { 
    if(teamId === 0) 
     return teams; 

    const findTeam = (team) => { 
     return team.teamId === teamId; 
    } 

    teams.find(findTeam); 

} 

Und hier ist die Anordnung von Teams

[ 
    { 
     id: 123, 
     name: "Boston Celtics", 
     players: [ 
     { id: 747, name: "John Doe" }, 
     { id: 749, name: "John Smith" }, 
     ] 
    }, 
    { 
     id: 234, 
     name: "LA Lakers", 
     players: [ 
     { id: 888, name: "James Smith" }, 
     { id: 823, name: "John Green" }, 
     ] 
    } 
] 

Mein Hauptanliegen ist, die die findTeam() Funktion innerhalb getTeam() Funktion.

UPDATE: So etwas wie das? Könnte sein?

const getTeam = (teams, teamId) => { 
    if(teamId === 0) 
     return teams; 

    teams.find((team) => { 
     return team.teamId === teamId; 
    }); 

} 
+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter vielleicht? – ceejayoz

+0

Muss es nicht return team.id sein? –

+0

@ceejayoz 'filter' gibt alle Treffer zurück,' find' gibt nur den ersten zurück. – Barmar

Antwort

1
getTeam=(teams,teamId)=>teamId?teams.find(team=>team.id==teamId):teams; 

kurz einfach nicht besser. Wie viele andere angemerkt haben, werden anoymous vs. benannte Funktionen vs. Schleifen einen Mikrosekundenkrieg verursachen, also ist es nicht wirklich wert.

+0

Ich würde sagen, Ihr Code ist kleiner, aber nicht sauberer. –

+0

so würde ich es schreiben. Obwohl vielleicht mit ein paar Leerzeichen mehr und auf 2 Zeilen :) – chriskelly

+0

textswithoutspacesarehardtoread;) – georg

0

Dies sollte es tun.

function getTeam(teams,teamId) { 
     return teams.filter((x) => x.id === teamId); 
}; 
+0

find() wäre klarer und schneller, da es nach dem ersten gefundenen Element – rasmeister

+0

stoppen werde Ich sehe die Vorteile von beiden. Filter ist eine gute Wahl, wenn es mehr als ein Element mit der gleichen TeamId geben kann. In meinem Fall ist find sauberer, weil ich technisch gesehen nicht mehr als einmal ein Element mit der gleichen teamId haben sollte. – Sam

+0

Wenn Sie jedoch filter verwenden, müssen Sie die Rückgabe als ein Array von Teams behandeln. – rasmeister