如何从JavaScript函数返回多个值

How to return multiple values from JavaScript function

本文关键字:返回 函数 JavaScript      更新时间:2023-09-26

我有一个函数正在验证表单输入,我需要返回经过验证的值。现在,我正在使用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');
      };
    }
  }

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;

我试图简化逻辑。如果不需要,也没有理由添加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)
    }
  }