Как вернуть данные из функции - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь решить следующие ката:

2-значное число, если вы сложите цифры вместе, умножьте на 3, добавьте 45 и наоборот.

Я не могу понять, как вернуть данные из моей функции, чтобы впоследствии я мог присвоить значение элементу HTML.

Это мой код.

function daily() {
   for(var j = 10; j < 100; j++) {
       function teaser(num) {
           var x = num;
           var y = x.toString().split("");
           if(y.length == 2) {
               var sum = parseInt(y[0]) + parseInt(y[1]);
               if(sum * 3 == x) {
                   console.log(x + " is equal to 3 times " + sum);
                   var addFortyFive = x + 45;
                   console.log("Adding 45 to " + x + " gives " + addFortyFive);
                   var reversal = parseInt(addFortyFive.toString().split('').reverse().join(''));
                   console.log("'The 2 digit number " + x + ", is 3 times the sum (" + sum + ") of its digits. If 45 is added to " + x + ", the result is " + addFortyFive + ". If the digits are reversed, the number is... " + reversal + ".");
               }
           } else {
               console.log("Not a 2 digit Number!!");
           }
       }
       teaser(j);
   }
}

Ответы [ 4 ]

0 голосов
/ 03 ноября 2018

хорошо, так что моя проблема была решена! Спасибо всем вам, особенно krillgar, поэтому мне пришлось немного изменить код, который вы дали мне krillgar, чтобы заполнить массив результатов только числами (в данном случае одним числом), которые удовлетворяют параметрам ежедневного тизера I спрашивал о. у вас было 89 неопределенных и число 27, потому что это единственное число, которое работает.

Одна из моих проблем заключалась в том, что я ожидал, что оператор return не только сохранит значение, но и покажет его на экране, но я не понял, что мне нужно место для хранения значения. В своем коде вы создали массив результатов для заполнения правильными числами. Кроме того, мне нужна была переменная для хранения данных для каждой итерации цикла for, циклически проходящего через 10 - 100. В любом случае, вы дали мне то, что мне нужно, чтобы выяснить это и заставить его делать то, что я хотел, и все хорошо в мире снова.

В любом случае, спасибо всем за помощь и вклад, и я всегда буду помнить, чтобы у меня было место для хранения ответов, а также где-то для хранения значения каждой итерации цикла, чтобы решить, в какие числа нажимать массив результатов и сохраните его, чтобы его можно было отображать и / или манипулировать для любых целей. Я думаю, я был так занят, думая о том факте, что когда я вернул num, он не показывал значение, а не думал о том, что мне нужно было сохранить значение. Вот окончательный код для этой проблемы и еще раз спасибо, народы!

function daily() {
var results = [];
for(var j = 10; j < 100; j++) {
    function teaser(num) {
        var x = num;
        var y = x.toString().split("");
        if(y.length == 2) {
            var sum = parseInt(y[0]) + parseInt(y[1]);
            if(sum * 3 == x) {
                console.log(x + " is equal to 3 times " + sum);
                var addFortyFive = x + 45;
                console.log("Adding 45 to " + x + " gives " + addFortyFive);
                var reversal = parseInt(addFortyFive.toString().split('').reverse().join(''));
                console.log("'The 2 digit number " + x + ", is 3 times the sum (" + sum + ") of its digits. If 45 is added to " + x + ", the result is " + addFortyFive + ". If the digits are reversed, the number is... " + reversal + ".");
                return num;
                // Here you have one that is correct, so return it:
           } else {
                console.log(num + " does not fulfill function parameters");
                // This is just so you can visualize the numbers
                return null;
            }
        }
    }
    var answer = teaser(j);
    if(answer != null) {
        results.push(answer);
    }
}
return results;

}

0 голосов
/ 02 ноября 2018

Как было сказано в комментариях к вопросу, поскольку у вас (скорее всего) будет несколько ответов, соответствующих вашему условию, вам нужно будет сохранить их в массиве. Ваша функция teaser возвращает отдельные результаты, где daily проверит все числа в вашем диапазоне.

function daily() {
    var results = [];
   for(var j = 10; j < 100; j++) {
       function teaser(num) {
           var x = num;
           var y = x.toString().split("");
           if(y.length == 2) {
               var sum = parseInt(y[0]) + parseInt(y[1]);
               if(sum * 3 == x) {
                   console.log(x + " is equal to 3 times " + sum);
                   var addFortyFive = x + 45;
                   console.log("Adding 45 to " + x + " gives " + addFortyFive);
                   var reversal = parseInt(addFortyFive.toString().split('').reverse().join(''));
                   console.log("'The 2 digit number " + x + ", is 3 times the sum (" + sum + ") of its digits. If 45 is added to " + x + ", the result is " + addFortyFive + ". If the digits are reversed, the number is... " + reversal + ".");

                    // Here you have one that is correct, so return it:
                    return num;
               } else {
                    // Make sure we don't return undefined for when the sum 
                    // times three doesn't equal the number.
                    return null;
                }
           } else {
               console.log("Not a 2 digit Number!!");
                return null;
           }
       }
       var answer = teaser(j);

        if (answer !== null) {
            results.push(answer);
        }
   }

    return results;
}
0 голосов
/ 02 ноября 2018

От вашего вопроса, я думаю, вам нужно reversal значение для функции ежедневно для цикла.

Рекомендовал бы вынуть тизер функций из цикла for, это сделает код намного чище и проще для понимания, и вы можете сделать так:

function daily() {
   for(var j = 10; j < 100; j++) {
       var teaser = teaser(j);
       // Can now use anything returned from teaser function here
   }
}

function teaser(num) {
     var x = num;
     var y = x.toString().split("");
     if(y.length == 2) {
         var sum = parseInt(y[0]) + parseInt(y[1]);
         if(sum * 3 == x) {
             console.log(x + " is equal to 3 times " + sum);
             var addFortyFive = x + 45;
             console.log("Adding 45 to " + x + " gives " + addFortyFive);
             var reversal = parseInt(addFortyFive.toString().split('').reverse().join(''));
             console.log("'The 2 digit number " + x + ", is 3 times the sum (" + sum + ") of its digits. If 45 is added to " + x + ", the result is " + addFortyFive + ". If the digits are reversed, the number is... " + reversal + ".");

             return reversal;
         }
     } else {
         console.log("Not a 2 digit Number!!");
         return false;
     }
 }

Если вы не хотите отключать функцию, вы можете сделать это:

function daily() {
   for(var j = 10; j < 100; j++) {
       function teaser(num) {
           var x = num;
           var y = x.toString().split("");
           if(y.length == 2) {
               var sum = parseInt(y[0]) + parseInt(y[1]);
               if(sum * 3 == x) {
                   console.log(x + " is equal to 3 times " + sum);
                   var addFortyFive = x + 45;
                   console.log("Adding 45 to " + x + " gives " + addFortyFive);
                   var reversal = parseInt(addFortyFive.toString().split('').reverse().join(''));
                   console.log("'The 2 digit number " + x + ", is 3 times the sum (" + sum + ") of its digits. If 45 is added to " + x + ", the result is " + addFortyFive + ". If the digits are reversed, the number is... " + reversal + ".");

                   return reversal;
               }
           } else {
               console.log("Not a 2 digit Number!!");
               return false;
           }
       }

       var teaser = teaser(j);
       // Can now use anything returned from teaser function here
   }
}
0 голосов
/ 02 ноября 2018

Возврат чего-либо из функции очень прост!

Просто добавьте оператор return в вашу функцию.

function sayHello(name) {
	return 'Hello ' + name + '!';
}

console.log(sayHello('David'));
...