Blog Logo Screenlight Blog

JavaScript: Der bessere Taschenrechner

JS Calculator

Viele Mathematikprobleme lassen sich dank komfortabler Eingabemethode und integrierten Hilfsfunktionen in JavaScript einfacher lösen als mit gängigen Methoden.

Bei der Entwicklung von Websites (und vielen anderen Jobs) kommt es nicht selten vor, dass man mit kleineren Rechenaufgaben konfrontiert wird. Oft sind diese Rechnungen zu komplex fГјr eine einfache Taschenrechner-Software und zu banal fГјr eine Spreadsheet-Anwendung.

JavaScript ist ideal für die Lösung solcher Probleme! Jeder morderne Browser verfügt mittlerweile über integrierte Dev Tools oder ist um solche erweiterbar. Damit verfügt jeder Browser über einen REPL (Read Eval Print Loop), oder auch JavaScript Console genannt, in dem sich beliebiger JavaScript Code ausführen lässet. Alternativ zu browser-basierten REPLs bieten auch Node.js und andere serverseitige JavaScript-Interpreten eine REPL-Umgebung.

Dabei spielen die Math Library und die Funktionen map (JS 1.6), reduce (JS 1.8), filter (JS 1.6) und sort eine essentielle Rolle.

Der REPL

Der Read Eval Print Loop ist eine interaktive Programmierumgebung und ist in jedem Browser verfügbar. Browsers mit einer mehrzeiligen Konsoleneingabe bieten mehr Übersicht. In Firebug lässt sich der Mehrzeilenmodus über einen Button unten rechts einschalten. In den Firefox und Chrome Dev Tools erreicht man Umbrüche im Code mit Shift Enter.

Multiline-Modus in Firebug aktivieren

Multiline-Modus in Firebug aktivieren

Mathematikprobleme mit JavaScript lösen

Nebst banalen Rechenaufgaben wie Additionen, Subtraktionen, Multiplikationen, etc. bietet JavaScript vor Allem beim Rechnen mit DatensГ¤tzen oder Kalenderdaten deuteliche Vorteile und durch die Verwendung von Variablen und Funktionen lassen sich Operationen auf einfache Weise mit unterschiedlichen Eingabewerten wiederholen – wie bei einem guten Taschenrechner, aber mit einer besseren Tastatur und mehr Platz.

Mit mehr oder weniger fundierten JavaScript-Kenntnissen ist man oft schneller.

Strings mit Zahlen in ein Array umwandeln

<br />
function s2n (x) {<br />
 return x.split(/[^0-9] /) // Aufsplitten und ein Array erzeugen<br />
 .map(function (s) { return s; }); // Alle Array-Einträge in Zahlen umwandeln<br />
}<br />

Was ist die Summe aller geraden Zahlen in 324, 545, 654, 23, 34, 99 und 24?

<br />
s2n("324, 545, 654, 23, 34, 99 und 24")<br />
 .filter(function (n) { return (n % 2 === 0); })<br />
 .reduce(function (a, b) { return a b; });<br />

Was ist eigentlich der Durchschnitt von 34, 456, 32, 546, 331, 4, und 1?

<br />
x = s2n("34, 456, 32, 546, 331, 4, und 1");</p>
<p>x.reduce(function (a, b) { return a b; }) / x.length;<br />

Was ist eigentlich der Median von 34, 456, 32, 546, 331, 4, und 1?

<br />
x = s2n("34, 456, 32, 546, 331, 4, und 1")<br />
 .sort(function (a, b) { return a &amp;amp;gt; b; });</p>
<p>x[ Math.floor(x.length / 2) ];<br />

Margin bei mehrspaltigen Layouts berechnen

<br />
width = 1170;<br />
columns = [170, 270, 370, 270];</p>
<p>(width - columns.reduce(function (a, b) { return a b; })) / ( columns.length -1 );<br />

Wie alt bin ich in Tagen?

<br />
Math.round(( Date.now() - new Date("1986-10-05") ) / 1000 / 3600 / 24);<br />

Was ist der Aspect Ratio meiner Katze?

<br />
length = 67, width = 23;<br />
Math.round(length / width * 100) / 100;<br />

Rechnen mit Firebug

Leave a Response

No comments so far, would you like to be the first?