2016-11-23 8 views
1

Ich habe eine Gleichung wie diese in einer Variablen gespeichert (50 * 1.07^1) ist sehr einfach. Ich möchte wissen, wie ich die Macht jedes Mal ändern kann, wenn eine Funktion so läuft: 50 * 1.07^2, 50 * 1.07^3 und so weiter. Irgendeine Hilfe? Hier ist mein Code:Ändern einer bestimmten Sache in einer Variablen

var mathForCost = 50 * 1.07^1; 

function gainCoinsPS() { 
    if (coins >= costPS) { 
     coinsPS += 10; 
     coins -= costPS; 
     // Here is where I am changing the cost each time the function runs, 
     // so I need to make the power(^1) add 1 each time 
     costPS = document.getElementById("changePrice1").innerHTML = "Cost: " + costPS; 
    } else {; 
     alert("You dont have enough coins!"); 
    }; 

} 
+4

Speichern Sie die Macht in einer Variablen und erstellen Sie dann Ihre Gleichung mit dieser Variable? Bitte zeigen Sie uns einen Code, der Ihr Problem darstellt und was Sie als Lösung getan haben oder gedacht haben. –

+0

Ich habe meinen Code hinzugefügt hilft es? – Shtabbbe

+0

In Javascript kann man eine Gleichung nicht wirklich in einer Variablen speichern, außer vielleicht als String (aber das ist mit eigenen Problemen behaftet). Ihre Funktion wird in dem Moment ausgewertet, in dem Sie sie ausführen, und der Wert der Ausgabe wird stattdessen in der Variablen gespeichert. Außerdem ist das ['^'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR) nicht die Stärke in Javascript - Sie wollen ['Math .pow'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow). –

Antwort

0

die Macht an eine Variable speichern, und Sie können es aktualisieren, wenn nötig. Es ist vorzuziehen, dass Sie die Gleichung in eine Funktion setzen und Energie an sie übergeben und die Lösung zurückgeben.

var power = 1, 
 
    eq = function(p){ 
 
     return 50*1.07^+p; // returns solution 
 
    }; 
 

 
for(var i=0; i<10; i++){ 
 

 
    power = i; 
 

 
    console.log(eq(power)); // solution 
 

 
} 
 

 

0

Sie können einen Zustand in der Funktion speichern, die die Gleichung ausgeführt wird. Dadurch vermeiden Sie, dass mehr Status außerhalb der Funktion hinzugefügt werden. Lassen Sie die Funktion verfolgen, wie oft sie aufgerufen wurde.

function calc() { 
 
    if (!this.i) { 
 
    this.i = 1; 
 
    } 
 
    return (50 * Math.pow(1.07, this.i++)); 
 
} 
 

 
console.log(calc()); 
 
console.log(calc()); 
 
console.log(calc());

0

Sie können Ihre Leistung in einer Variablen speichern und es jedes Mal Ihre Funktion erhöhen aufgerufen wird.

var power = 1; 
 

 
function calculate() { 
 
    console.log(50 * Math.pow(1.07, power)); 
 
    power++; 
 
} 
 

 
calculate(); 
 
calculate(); 
 
calculate();

0

In Javascript man nicht wirklich eine Gleichung in einer Variablen speichern kann, außer vielleicht als String (aber das ist mit Fragen der eigenen voll). Ihre Funktion wird in dem Moment ausgewertet, in dem Sie sie ausführen, und der Wert der Ausgabe wird stattdessen in der Variablen gespeichert.

Um zu tun, was Sie tun möchten, wäre es besser, eine Funktion zu haben, die die Gleichung ausführt, und die Leistung jedes Mal erhöht - dies funktioniert, wenn die Leistung in einem höheren Bereich liegt (oder mit einem Schließung)

var power = 1; 
function getCost() 
    var cost = Math.pow(50*1.07, power); 
    power++; 
    return cost; 
} 

Jedesmal, wenn diese Funktion ausgeführt wird, gibt sie die berechneten Kosten und erhöht auch den Wert der Leistung, so wird es eine höher das nächste Mal läuft es sein.

Alternativ, wenn Sie den Verschluss Weg gehen wollen, könnten Sie so etwas tun:

var getCost = (function() { 
    var power = 1; 
    return function() { 
     var cost = Math.pow(50*1.07, power); 
     console.log(power); 
     power++; 
     return cost; 
    } 
})(); 
0

Es gibt Math.pow JavaScript-Funktion dafür ist.

Sie können so etwas wie dieses

var pow = 1; 
for(var power=1; power<limit; power++){ // run the loop upto a limit 
console.log(Math.pow(50*1.07, power); 
} 
+0

Das 'int' sollte' var' sein. * "JavaScript (nicht mit Java zu verwechseln) ..." * –

+0

yeah ... sry über das .. Ich schrieb ein paar Cpp-Code, als ich auf diese stolperte :) Danke für die Korrektur @Adam –

0

verwenden Sie eine Funktion für sie nutzen könnten.

getCost = function (n) { return 50 * Math.pow(1.07, n); }; 

Oder mit arrow function

getCost = n => 50 * Math.pow(1.07, n); 

Nennen Sie es die ES6 mit

value = getCost(1); 
0

Macht 1.07 um 1 zu erhöhen, multiplizieren nur Wert von 1.07 wird jedes Mal (pow Funktion bei nicht erforderlich alle)

var mathForCost = 50 * 1.07; 

    ... 
    mathForCost = mathForCost * 1.07; 
Verwandte Themen