Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.javascript > #4610
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | de.comm.infosystems.www.authoring.misc, de.comp.lang.javascript |
| Subject | Re: (JavaScript) Wenn Variable X = Y dann Variable A = B |
| Followup-To | de.comp.lang.javascript |
| Date | 2015-06-28 23:35 +0200 |
| Organization | PointedEars Software (PES) |
| Message-ID | <1753524.0T2du3xxeY@PointedEars.de> (permalink) |
| References | <mmnb62.5n8.1@mid.maikkoenig.de> |
Cross-posted to 2 groups.
Followups directed to: de.comp.lang.javascript
[X-Post und F'up2 de.comp.lang.javascript]
Maik Koenig wrote:
> Ist das erste Ergebnis 20, muss der Multiplikator 1.6 lauten. Bei 21
> wäre es 1.5 und so weiter.
> […]
> Jetzt könnte ich natürlich einige Dutzend IFs einsetzen und darüber dann
> den korrekten Multiplikator automatisch erfassen, aber das geht doch
> hoffentlich einfacher? Hat jemand eine Idee und könnte sie mir erklären
> oder mich eventuell auf eine Webseite schicken wo die Lösung zumindest
> halbwegs erklärt wird?
Ja. (Und an dieser Stelle sollte meine Antwort zuende sein, denn Du hast
die falsche Frage gestellt. [1])
Zunächst sollte Dir klar sein, dass Du hier mit Fliesskommawerten (gemäss
IEEE 754 “double precision”) arbeitest, es also nicht für jede Zahl eine
exakte Darstellung gibt. Davon abgesehen sind Dictionaries bzw. in
J(ava)Script/ECMAScript Object-Instanzen hier das Mittel der Wahl (_nicht_
Arrays; es sei denn, die Indizes beginnen mit 0 und sind aufeinanderfolgend,
oder andere Eigenschaften von Arrays sind wichtig – es gibt keine
assoziativen Arrays in JS/ES):
function getMultiplier (result)
{
return ({
20: 1.6,
21: 1.5
})[result];
}
Bzw. seit ECMAScript Edition 5 als reines Datenobjekt:
function getMultiplier (result)
{
return Object.create(null, {
20: {value: 1.6},
21: {value: 1.5}
})[result];
}
Beachte, dass die Schlüssel in diesem Fall immer Strings sind, auch wenn es
nicht so aussieht; denn es sind tatsächlich Namen von Objekteigenschaften.
Implementierungen von ECMAScript Edition 6/2015 (derzeit noch Working Draft)
unterstützen Map, wo die Schlüssel einen beliebigen Typ haben können.
function getMultiplier (result)
{
return new Map([
[20, 1.6],
[21, 1.5]
]).get(result);
}
<https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Map>
oder
<http://PointedEars.de/wsvn/JSX/trunk/map.js>
Siehe jedoch auch meine andere Antwort in <news:de.comp.lang.javascript>, wo
diese Diskussion hingehört: <news:7762458.r6rIteaMLD@PointedEars.de>
PointedEars
___________
[1] <https://www.tty1.net/smart-questions_de.html>
--
> hoehe=screen.height; breite=screen.width;
Was hat dies mit der Fenstergröße zu tun? Genauso kannst Du fragen:
"Wie groß ist Nachbars Garage?", um zu ermitteln, wie groß wohl mein
Auto sein mag. (Georg Maaß in dcljs <ap315c$r2pon$2@ID-3551.news.dfncis.de>)
Back to de.comp.lang.javascript | Previous | Next | Find similar
Re: (JavaScript) Wenn Variable X = Y dann Variable A = B Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-28 23:35 +0200
csiph-web