简体   繁体   English

如何从JavaScript函数返回多个值

[英]How to return multiple values from JavaScript function

I have a function that is validating form input, and I need to return the validated values. 我有一个验证表单输入的函数,我需要返回验证后的值。 Right now, I'm using if else clauses to call individual validators, so my function returns just the first validated field ( age ), but I want to return age , lastName , and firstName to the calling function. 现在,我正在使用if else子句来调用单个验证器,因此我的函数仅返回第一个经过验证的字段( age ),但是我想将agelastNamefirstName返回给调用函数。

How can I get multiple values to be returned? 如何获取多个要返回的值?

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');
      };
    }
  }

I tried to simplify the logic. 我试图简化逻辑。 There is also no reason to add an else statement if it's not needed. 如果不需要,也没有理由添加else语句。 Also, see how I'm calling a second function with the variables you want to pass as arguments. 另外,请参阅如何使用要作为参数传递的变量调用第二个函数。

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 has no notion of returning multiple objects from a functions. Javascript没有从函数返回多个对象的概念。 Instead you'll have to build up an object that itself contains these values: 相反,您必须构建一个本身包含以下值的对象:

  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