Ich möchte die folgende Zeichenfolge '14 2'
in ein Array von zwei Ganzzahlen konvertieren . Wie kann ich es tun ?
javascript
TJ
quelle
quelle
for(var i=myArray.length; i--;) myArray[i] = myArray[i]|0;
mit der bitweisen Konvertierung und kürzeren SchleifenmyArray.forEach(function(x,y,z){ z[y]=x|0 })
.min.js
und.js
wenn Sie Ihren Code verfügbar machen möchten ... denken Sie daran, dass die Minimierung nicht zur Verschleierung dient (oder nicht, da sie dafür ungefähr unbrauchbar ist), sondern zur Reduzierung des HTTP-Overheads - eine schnellere Seitenladung für Ihre Benutzer.Eine schnelle für moderne Browser:
quelle
SO ... älterer Thread, ich weiß, aber ...
BEARBEITEN
@RoccoMusolino hatte einen schönen Fang; Hier ist eine Alternative:
TL; DR:
FALSCH :
"5 6 note this foo".split(" ").map(Number).filter(Boolean); // [5, 6]
Die hier aufgeführten eleganteren Lösungen weisen einen subtilen Fehler auf, insbesondere die ansonsten schönen Antworten von @amillara und @Marcus.
Das Problem tritt auf, wenn ein Element des Zeichenfolgenarrays nicht ganzzahlig ist, möglicherweise in einem Fall ohne Validierung einer Eingabe. Für ein erfundenes Beispiel ...
Das Problem:
Da Sie offensichtlich ein PURE int-Array möchten, ist dies ein Problem. Ehrlich gesagt habe ich das erst verstanden, als ich SO-Code in mein Skript kopiert habe ...: /
Der (etwas weniger Baller) Fix:
Selbst wenn Sie jetzt einen Crap-Int-String haben, ist Ihre Ausgabe ein reines Integer-Array. Die anderen sind in den meisten Fällen wirklich sexy, aber ich wollte mein meistens wildes W'actually anbieten . Es ist immer noch ein Einzeiler, zu meiner Ehre ...
Hoffe es spart jemandem Zeit!
quelle
.filter(Boolean)
durch.filter( (x) => !Number.isNaN(x))
quelle
parseInt()
..map
JS in jedem Browser ohne zusätzliche Bibliotheken verwenden können und ähnliches.Eine Alternative zur Antwort von Tushar Gupta wäre:
Beim Code Golf speichern Sie 1 Zeichen. Hier ist das "+" der Operator "unary plus" und funktioniert wie parseInt.
quelle
Teilen Sie zuerst die Zeichenfolge auf Leerzeichen:
Konvertieren Sie dann das Ergebnisarray von Zeichenfolgen in Ganzzahlen:
quelle
parseInt()
, da Sie sonst möglicherweise Oktale erhalten.0
oder0x
es in Ordnung sein sollte.Der Punkt gegen den
parseInt
Ansatz:Es ist nicht erforderlich, Lambdas zu verwenden und / oder
radix
Parameter anzugeben.parseInt
Verwenden Sie einfachparseFloat
oderNumber
stattdessen.Gründe dafür:
Es funktioniert:
Es ist kürzer.
Es ist ein kleines bisschen schneller und nutzt den Cache, wenn
parseInt
- Ansatz - nicht :Hinweis: In Firefox
parseInt
funktioniert es ungefähr viermal schneller, aber immer noch langsamer als andere. Insgesamt:+e
<Number
<parseFloat
<parseInt
quelle
Nur zum Spaß dachte ich, ich würde auch eine
forEach(f())
Lösung einwerfen .quelle
quelle
Bessere einzeilige Lösung:
quelle
uns die Split-Funktion :
quelle