2017-02-08 3 views
0

Ich habe eine Funktion erstellt, die, wenn sie mit zwei Argumenten aufgerufen wird, die Argumente gegen einige zusätzliche Daten prüft und, wenn die Rückgabe false ist, das Feld zurückgibt.Rückgabevariable innerhalb von array.find()

Ich möchte eines der Elemente zurückgeben, wenn false und Ignorieren/zurückgeben undefiniert, wenn true.

getFirstInvalidField() { 
    const allFields = this.getPassengerDetailsFieldsRefs(); 
    allFields[0].find(function (field){ 
     if (!this.isValidField(field, 0)) { 
     return field; 
     } 
    }, this); 
    } 

Also, wenn isValidField kehrt false, sollte es field an den Ort zurück, wo getFirstInvalidField() genannt wurde. Dies scheint nicht zu geschehen.

const firstInvalidField = this.getFirstInvalidField(); 

Dies sollte field zurückkehren, sondern kehrt undefined immer. Es scheint, die return field Aussage ist nicht auf firstInvalidField

+1

[Die docs sagt] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) „_Die find() -Methode einen Wert von zurückgibt das erste Element im Array, das die angegebene Testfunktion erfüllt, andernfalls wird undefined zurückgegeben. _ " – Teemu

+0

@Teemu ja, und es sollte erfüllt und zurückgegeben werden? – user1486133

+3

Setzen Sie eine 'return' vor' allFields [0] .find() '. Sie geben das Ergebnis in die Funktion zurück, geben aber nicht das Ergebnis * aus * der Funktion zurück. – Archer

Antwort

3

Sie müssen in Funktion getFirstInvalidField() der zurückgegebene Wert von allFields[0].find() als solche zurückzukehren zurückgeleitet und zugewiesen bekommen:

getFirstInvalidField() { 
    const allFields = this.getPassengerDetailsFieldsRefs(); 
    return allFields[0].find(function (field){ 
    if (!this.isValidField(field, 0)) { 
     return field; 
    } 
    }, this); 
} 
-1

Sie müssen zurückzukehren, um eine true oder false Antwort von find() Rückruf. Geben Sie das Ergebnis auch an den Funktionsaufrufer zurück.

getFirstInvalidField() { 
    const allFields = this.getPassengerDetailsFieldsRefs(); 
    return allFields[0].find(function (field){ 
    return !this.isValidField(field, 0); 
    }, this); 
} 
Verwandte Themen