[英]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
),但是我想将age
, lastName
和firstName
返回给调用函数。
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.