Как вернуть несколько значений с помощью функции? - PullRequest
2 голосов
/ 23 мая 2019

Каким образом я мог бы заставить функцию возвращать мне 3 значения, чтобы эти 3 значения служили входными параметрами для другой функции (как если бы это был обратный вызов - что на самом деле, я думаю, что это-)?

До сих пор попробуйте следующее (хотя это не сработало):

var resultado;
function num_2(repet){
	for (var i = 0; i > repet-1; i++) {
		if (i>=1) {
			return i + ", ";
		}else{
			return i;
		}
	}
}


function sumarr(a,b,c){
	if (a!="" && a!=null) {
		resultado = a+b+c;
		return "\n" + "resul: " + resultado + '\n' + "1: " +
		a + '\n' + "2: " + b + '\n' + "3: " + c + '\n' + '\n';
	}else{
		return "noting";
	}
}
console.log("\n" + "callback 2: " + sumarr(num_2(3)));

Ответы [ 4 ]

4 голосов
/ 23 мая 2019

Вы можете вернуть массив из первой функции и передать каждый элемент другой другой функции в качестве независимого аргумента, используя Spread Operator.

var resultado;
function num_2(repet){
  return [...Array(repet)].map((x,i) => i)
}
function sumarr(a,b,c){
	return a + b + c
}
console.log("\n" + "callback 2: " + sumarr(...num_2(3)))

Если вам трудно понять первую функцию, то же самое, что и

function num_2(repet){
  let res = [];
  for(let i = 0;i<repet;i++){
     res.push(i)
  }
  return res;
}
2 голосов
/ 23 мая 2019

У вас есть два варианта; вернуть объект JSON, вернуть массив.

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

var input = function() { 
   return { 
     a: 1, 
     b: 2 
   }; 
}
   
var output = function(obj) { 
   console.log(obj.a);
   console.log(obj.b);
}

output(input());

Возвращение массива и использование его в качестве аргументов для вызова функции с apply () или с расширенный синтаксис

var input = function() { 
   return [1, 2]; 
}
  
var output = function(a, b) { 
   console.log(a);
   console.log(b);
}

output.apply(this, input());

output(...input());

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

1
2
2 голосов
/ 23 мая 2019

с объектом JS:

var Vals = Return3Values();

console.log( Vals.a, Vals.b, Vals.c );

function Return3Values()
{
 return {a:5, b:'hello', c:15 }
}
1 голос
/ 23 мая 2019

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

function logLotsOfThings({thing1, thing2, thing3}) {
  console.log(thing1, thing2, thing3)
}

function getLotsOfThings() {
  return {
    thing1: "I am thing 1",
    thing2: "I am thing 2",
    thing3: "I am thing 3"
  }
}

logLotsOfThings(getLotsOfThings())
...