Вернуть несколько значений в JavaScript? - PullRequest
697 голосов
/ 27 мая 2010

Я пытаюсь вернуть два значения в JavaScript. Это возможно?

var newCodes = function() {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return dCodes, dCodes2;
};

Ответы [ 18 ]

2 голосов
/ 27 октября 2017

Вы можете использовать «Объект»

function newCodes(){
    var obj= new Object();
    obj.dCodes = fg.codecsCodes.rs;
    obj.dCodes2 = fg.codecsCodes2.rs;

    return obj;
}
2 голосов
/ 19 июля 2018

Я бы предложил использовать последнее деструктивное назначение (но убедитесь, что оно поддерживается в вашей среде )

var newCodes = function () {
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return {firstCodes: dCodes, secondCodes: dCodes2};
};
var {firstCodes, secondCodes} = newCodes()
1 голос
/ 04 апреля 2019

Я знаю два способа сделать это: 1. Вернуть как массив 2. Вернуть как объект

Вот пример, который я нашел:

<script>
// Defining function
function divideNumbers(dividend, divisor){
    var quotient = dividend / divisor;
    var arr = [dividend, divisor, quotient];
    return arr;
}

// Store returned value in a variable
var all = divideNumbers(10, 2);

// Displaying individual values
alert(all[0]); // 0utputs: 10
alert(all[1]); // 0utputs: 2
alert(all[2]); // 0utputs: 5
</script>



<script>
// Defining function
function divideNumbers(dividend, divisor){
    var quotient = dividend / divisor;
    var obj = {
        dividend: dividend,
        divisor: divisor,
        quotient: quotient
    };
    return obj;
}

// Store returned value in a variable
var all = divideNumbers(10, 2);

// Displaying individual values
alert(all.dividend); // 0utputs: 10
alert(all.divisor); // 0utputs: 2
alert(all.quotient); // 0utputs: 5
</script>
1 голос
/ 21 декабря 2017

Все правильно. return логически обрабатывает слева направо и возвращает последнее значение.

function foo(){
    return 1,2,3;
}

>> foo()
>> 3
0 голосов
/ 27 июня 2019

Ну, мы не можем точно сделать то, что вы пытаетесь. Но что-то, что может быть ниже, может быть сделано.

function multiReturnValues(){
    return {x:10,y:20};
}

Тогда при вызове метода

const {x,y} = multiReturnValues();

console.log(x) ---> 10
console.log(y) ---> 20
0 голосов
/ 25 июня 2019

Добавление недостающих важных частей, чтобы сделать этот вопрос полным ресурсом, поскольку это появляется в результатах поиска.

Разрушение объекта

В случае деструктуризации объекта вам не обязательно использовать то же значение ключа, что и для имени вашей переменной, вы можете назначить другое имя переменной, определив его следующим образом:

const newCodes = () => {  
    let dCodes = fg.codecsCodes.rs;
    let dCodes2 = fg.codecsCodes2.rs;
    return { dCodes, dCodes2 };
};

//destructuring
let { dCodes: code1, dCodes2: code2 } = newCodes();

//now it can be accessed by code1 & code2
console.log(code1, code2);

Разрушение массива

При деструктуризации массива вы можете пропустить ненужные значения.

const newCodes = () => {  
    //...
    return [ dCodes, dCodes2, dCodes3 ];
};

let [ code1, code2 ] = newCodes(); //first two items
let [ code1, ,code3 ] = newCodes(); //skip middle item, get first & last
let [ ,, code3 ] = newCodes(); //skip first two items, get last
let [ code1, ...rest ] = newCodes(); //first item, and others as an array

Стоит отметить, что ...rest всегда должен быть в конце, так как не имеет никакого смысла разрушать что-либо после того, как все остальное агрегируется в rest.

Я надеюсь, что это добавит некоторой ценности этому вопросу:)

0 голосов
/ 20 декабря 2018

Я ничего не добавляю здесь, кроме другого альтернативного пути.

 var newCodes = function() {
     var dCodes = fg.codecsCodes.rs;
     var dCodes2 = fg.codecsCodes2.rs;
     let [...val] = [dCodes,dCodes2];
     return [...val];
 };
0 голосов
/ 16 июля 2018

Несколько дней назад у меня было похожее требование получения нескольких возвращаемых значений из функции, которую я создал.

Из многих возвращаемых значений мне нужно было вернуть только определенное значение для данного условия, а затем другое возвращаемое значение, соответствующее другому условию. Вот пример того, как я это сделал:

Функция:

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;

Весь смысл ответа на этот вопрос заключается в том, чтобы поделиться этим подходом получения даты в хорошем формате. Надеюсь, это помогло вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...