从array.find()中返回变量

时间:2017-02-08 15:03:53

标签: javascript arrays

我创建了一个函数,当使用两个参数调用时,根据某些补充数据检查参数,如果返回为false,则返回该字段。

如果false我希望返回其中一个元素,如果true则忽略/返回undefined。

  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

2 个答案:

答案 0 :(得分: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 :(得分:-1)

您需要从true回调中返回falsefind()回复。同时将结果返回给函数调用者。

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