繁体   English   中英

如何从JavaScript函数返回多个值

[英]How to return multiple values from JavaScript function

我有一个验证表单输入的函数,我需要返回验证后的值。 现在,我正在使用if else子句来调用单个验证器,因此我的函数仅返回第一个经过验证的字段( age ),但是我想将agelastNamefirstName返回给调用函数。

如何获取多个要返回的值?

validationForm(numberOfPassengers){
    for (let i=0; i < numberOfPassengers; i++) {
      let firstName = ReactDOM.findDOMNode(this.refs['firstName'+typeOfPassenger+i]).value;
      let lastName = ReactDOM.findDOMNode(this.refs["lastName"+typeOfPassenger+i]).value
      let age = ReactDOM.findDOMNode(this.refs['age'+typeOfPassenger+i]).value;
      let regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;
      let resultFirstName = firstName.match(regex);
      let resultLastName = firstName.match(regex);
      if(age <= 0){
        ('.age-alignment').addClass('error-border');
      }else{
        return age;
      };
      if(resultFirstName){
        return firstName;
      }else{
        ('.first-name').addClass('error-border');
      };
      if(resultLastName){
        return lastName;
      }else{
        ('.last-name').addClass('error-border');
      };
    }
  }

我试图简化逻辑。 如果不需要,也没有理由添加else语句。 另外,请参阅如何使用要作为参数传递的变量调用第二个函数。

function other_function(age,last_name, first_name){
        console.log("I have access to all of these:",age,last_name,first_name)
    }

validationForm(numberOfPassengers){
    for (let i=0; i < numberOfPassengers; i++) {
      let firstName = ReactDOM.findDOMNode(this.refs['firstName'+typeOfPassenger+i]).value;
      let lastName = ReactDOM.findDOMNode(this.refs["lastName"+typeOfPassenger+i]).value
      let age = ReactDOM.findDOMNode(this.refs['age'+typeOfPassenger+i]).value;
      let regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;
      let resultFirstName = firstName.match(regex);
      let resultLastName = firstName.match(regex);
      if(age <= 0){
        ('.age-alignment').addClass('error-border');
      }
      if(!resultFirstName){
        ('.first-name').addClass('error-border');
      };
      if(!resultLastName){
        ('.last-name').addClass('error-border');
      }
      return other_function(age,first_name,last_name)
    }
  }

Javascript没有从函数返回多个对象的概念。 相反,您必须构建一个本身包含以下值的对象:

  var returnObject = {};
  if(age <= 0){
    ('.age-alignment').addClass('error-border');
  }else{
    returnObject.age = age;
  };
  if(resultFirstName){
    returnObject.firstName = firstName;
  }else{
    ('.first-name').addClass('error-border');
  };
  if(resultLastName){
    returnObject.lastName = lastName;
  }else{
    ('.last-name').addClass('error-border');
  };
  return returnObject;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM