2016-12-01 1 views
0

Mit Gibt es eine schönere Art und Weise folgendes zu schreiben ?:eine negierte Wache

t = { 
    name, 
    color, 
    teamId: !user?undefined:teamId, 
    userId: user&&user.id 
}; 

Also, wenn Benutzer definiert ist, dann möchte ich userId, sonst Mannschafts-ID verwenden.

const name = "Me"; 
 
    const color = "Red"; 
 
    let user; 
 
    let teamId = 10; 
 
    
 
    t = { 
 
     name, 
 
     color, 
 
     teamId: !user?undefined:teamId, 
 
     userId: user&&user.id 
 
    }; 
 
    
 
    console.log(t) 
 
    
 
    user = {id: 1}; 
 
    teamId = undefined; 
 
    
 
    t = { 
 
     name, 
 
     color, 
 
     teamId: !user?undefined:teamId, 
 
     userId: user&&user.id 
 
    }; 
 
    
 
    console.log(t)

+0

Warum nicht ein einfaches 'if/else'? Und ... ist es sogar möglich, ein Wörterbuch mit einigen deaktivierten Tasten zurückzugeben? (Name, Farbe) – Cyrille

+0

@Cyrille JS definiert kein Dictionary als ein eingebautes Objekt, dieser Code gibt ein Objekt vom Typ 'any' zurück, das an Ort und Stelle instanziiert wurde. – gelliott181

+1

Mein JS muss wirklich, wirklich rostig sein. Trotzdem glaube ich ein einfaches if/else wäre schöner zu lesen :) – Cyrille

Antwort

3

Es ist immer noch ein bisschen chaotisch, aber es prüft nur für den Benutzer einmal und ist ein bisschen besser lesbar

return user ? { name, color, "userId": user.id } : { name, color, "teamId": teamId }; 
2

Sie auch

tun können
{ 
    name, 
    color, 
    teamId: user ? undefined : teamId, 
    userId: user ? user.id : undefined 
}; 
+0

Können Sie bitte Ihre Antwort so ändern, dass Sie auf "nicht definiert" statt auf "falsch" setzen. Ich habe meine Frage aktualisiert, um zu zeigen, dass ich danach suche. – Baz