我试图在JavaScript中返回两个值。这可能吗?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
我试图在JavaScript中返回两个值。这可能吗?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
当前回答
只返回一个对象文字
function newCodes(){
var dCodes = fg.codecsCodes.rs; // Linked ICDs
var dCodes2 = fg.codecsCodes2.rs; //Linked CPTs
return {
dCodes: dCodes,
dCodes2: dCodes2
};
}
var result = newCodes();
alert(result.dCodes);
alert(result.dCodes2);
其他回答
几天前,我有类似的要求,从我创建的函数中获得多个返回值。
从许多返回值,我需要它只返回特定的值为一个给定的条件,然后其他返回值对应于其他条件。
以下是我如何做到这一点的例子:
功能:
function myTodayDate(){
var today = new Date();
var day = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var month = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var myTodayObj =
{
myDate : today.getDate(),
myDay : day[today.getDay()],
myMonth : month[today.getMonth()],
year : today.getFullYear()
}
return myTodayObj;
}
从函数返回的对象获取所需的返回值:
var todayDate = myTodayDate().myDate;
var todayDay = myTodayDate().myDay;
var todayMonth = myTodayDate().myMonth;
var todayYear = myTodayDate().year;
回答这个问题的关键是分享以良好格式获取Date的方法。希望对你有所帮助:)
我建议使用最新的解构赋值(但要确保它在您的环境中得到支持)
var newCodes = function () {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return {firstCodes: dCodes, secondCodes: dCodes2};
};
var {firstCodes, secondCodes} = newCodes()
除了像其他人推荐的那样返回一个数组或对象,你还可以使用一个收集器函数(类似于在the Little Schemer中找到的那个):
function a(collector){
collector(12,13);
}
var x,y;
a(function(a,b){
x=a;
y=b;
});
我做了一个jsperf测试,看看这三个方法中哪一个更快。数组是最快的,收集器是最慢的。
http://jsperf.com/returning-multiple-values-2
function a(){
var d = 2;
var c = 3;
var f = 4;
return {d: d, c: c, f: f};
}
然后使用
const {d, c, f} = a();
新版本:
function a(){
var d = 2;
var c = 3;
var f = 4;
return {d, c, f}
}
我们做不到你想做的事。但可能低于这个水平的事情是可以做到的。
function multiReturnValues(){
return {x:10,y:20};
}
然后在调用方法时
const {x,y} = multiReturnValues();
console.log(x) ---> 10
console.log(y) ---> 20