2016-10-14 4 views
-1

auflösen Ich habe eine mathematische Gleichung, die ich lösen soll, bevor ich es auf eine Funktion anwenden.Mathematische Berechnung Ich möchte vor der Ausführung einer Funktion

Ich habe die folgende mathematische Gleichung, die ich um wahr lösen wollen:

console.log((3*(2+0+5)+7*(7+8+2)+1*(1+1+8))%10 === 0); 

Die wörtliche Ausdruck true löst, aber der Ausdruck:

console.log((3*(d[0]+d[3]+d[6])+7*(d[1]+d[4]+d[7])+1*(d[2]+d[5]+d[8]))%10 === 0); 

Hier eine wörtliche des Ausdrucks mit den Variablen, die die gleichen Zahlen wie das Literal einfügen, führt zu false.

Kann mir jemand sagen, warum?

+1

* "aber der Ausdruck mit den Variablen [...] führt zu false" * - weil die Variablen nicht den gleichen Wert haben, den Sie denken, dass sie tun. Wenn sie das täten, wären die Ausdrücke identisch. – deceze

+0

In diesem Fall sieht "d" anders aus als Sie denken. – Seb

+0

Führen Sie eine schnelle Überprüfung Ihrer Annahmen dort durch: 'd.forEach ((x, i) => console.log (ich, typeof (x), x))' –

Antwort

2

Ich nehme an, d ist eine Zeichenfolge und Sie möchten einige Prüfsumme berechnen. In diesem Fall müssen Sie alle Daten der Zeichenfolge in Number konvertieren und dann den Test mit dNum durchführen.

dNum = d.split('').map(Number); 
+0

Angemessene Annahme. Gepflegte 'Karte'. –

+0

Danke David. Mapping der Nummer hat es geschafft! – cnak2

Verwandte Themen