2017-02-08 3 views
0

Я создал функцию, которая при вызове с двумя аргументами проверяет аргументы против некоторых дополнительных данных, а если возвращается false, возвращает это поле.Возвращаемая переменная изнутри array.find()

Я хочу вернуть один из элементов, если false и игнорировать/возвращать undefined, если true.

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

Так что, когда isValidField возвращается false, он должен вернуть field к месту, где getFirstInvalidField() называлась. Кажется, это не происходит.

const firstInvalidField = this.getFirstInvalidField(); 

Это должно вернуть field, но вместо этого возвращает undefined всегда. Кажется, return field заявление не получает передается обратно и назначен firstInvalidField

+1

[Документы говорят] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) «Метод _The находки() возвращает значение первый элемент в массиве, который удовлетворяет предоставленной функции тестирования. В противном случае возвращается undefined._ « – Teemu

+0

@Teemu да, и он должен был быть удовлетворен и возвращен? – user1486133

+3

Поместите 'return' перед' allFields [0] .find() '. Вы возвращаете результат в функцию, но не возвращаете результат * из * функции. – Archer

ответ

3

Вы должны вернуться в функции getFirstInvalidField() значение, возвращаемое allFields[0].find() как таковой:

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

Вы должны вернуть true или false ответ от find() callback. Также верните результат для вызова функции.

getFirstInvalidField() { 
    const allFields = this.getPassengerDetailsFieldsRefs(); 
    return allFields[0].find(function (field){ 
    return !this.isValidField(field, 0); 
    }, this); 
} 
Смежные вопросы