Reputation: 399
I have a function with an if-statement that in turn should call an outside function whether or not something is true. The result I get is 'undefined'. Could you please point me in the right direction?
Function 1:
function printRange(rangeStart, rangeStop) {
let summa = [];
for (i = rangeStart; i <= rangeStop; i++) {
summa.push(i);
}
let result2 = summa.join();
return result2;
}
Function 2:
function printRangeReversed(rangeStart, rangeStop) {
let summa = [];
for (i = rangeStart; i >= rangeStop; i--) {
summa.push(i);
}
let result3 = summa.join();
return result3;
}
Function 3:
function printAnyRange(rangeStart, rangeStop) {
if (rangeStart < rangeStop) {
printRange(rangeStart, rangeStop);
} else {
printRangeReversed(rangeStart, rangeStop);
}
return;
}
Calling the function: printAnyRange(21, 45);
As I said it all looks logical to me but I guess it isn't since I get the 'undefined'.
Expected result should be: "21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45"
Regards.
Upvotes: 1
Views: 2209
Reputation: 1842
The value that is getting returned from function 1
and function 2
is not being using or stored by function 3
. Try following code:
function printAnyRange(rangeStart, rangeStop) {
if (rangeStart < rangeStop) {
return printRange(rangeStart, rangeStop);
} else {
return printRangeReversed(rangeStart, rangeStop);
}
}
console.log(printAnyRange(10, 15));
this should fix the issue.
Upvotes: 2
Reputation: 44125
You need to do something with the returned values, like log them:
function printAnyRange(rangeStart, rangeStop) {
if (rangeStart < rangeStop) {
console.log(printRange(rangeStart, rangeStop));
} else {
console.log(printRangeReversed(rangeStart, rangeStop));
}
return;
}
Or return them from the main function:
function printAnyRange(rangeStart, rangeStop) {
if (rangeStart < rangeStop) {
result = printRange(rangeStart, rangeStop);
} else {
result = printRangeReversed(rangeStart, rangeStop);
}
return result;
}
Upvotes: 1
Reputation: 4650
You're not returning anything. Capture the result of the functions and return that variable.
function printRange(rangeStart, rangeStop) {
let summa = [];
for (i = rangeStart; i <= rangeStop; i++) {
summa.push(i);
}
let result2 = summa.join();
return result2;
}
function printRangeReversed(rangeStart, rangeStop) {
let summa = [];
for (i = rangeStart; i >= rangeStop; i--) {
summa.push(i);
}
let result3 = summa.join();
return result3;
}
function printAnyRange(rangeStart, rangeStop) {
let result = null;
if (rangeStart < rangeStop) result = printRange(rangeStart, rangeStop);
else result = printRangeReversed(rangeStart, rangeStop);
return result;
}
console.log(printAnyRange(1,5));
console.log(printAnyRange(5,1));
Upvotes: 3