2017-02-08 46 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,它應該返回fieldgetFirstInvalidField()被稱爲地方。這似乎沒有發生。

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 find()方法返回的值數組中的第一個元素滿足提供的測試函數,否則返回undefined。「 – Teemu

+0

@Teemu是的,它應該已經滿足並返回? – user1486133

+3

在'allFields [0] .find()'之前放置一個'return'。你將結果返回給函數,但是不能從函數返回結果*。 – 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

您需要返回從truefalse響應find()回調。還將結果返回給函數調用者。

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