.trim() ist keine Funktion
Habe ich eine sehr einfache Zeichenfolge, die kann enthält eine Liste, die kann eventuell Leerzeichen:
string = "one, two,three ";
Will ich erstmal split den string von ,
zu erstellen Sie ein array mit drei strings und entfernen Sie alle whitespace-Zeichen mit .trim()
array = string.split(',').trim();
gibt "one","two","three"
aber manchmal ist es fehl und gibt einen Fehler zurück .trim() is not a function
Habe ich gelesen, dass .trim()
gibt eine neue Zeichenfolge nicht eine beschnittene version des aktuellen Strings. So habe ich eine for-Schleife zu tun, die oben:
array = string.split(',');
for (var i = 0; i < array.length; i++) {
var item = array[i].trim();
array.push(item);
}
gibt "one","two","three"
meine Frage ist, kann jemand erklären, warum ich immer die Fehler nur manchmal? wenn das array nicht geändert, aus meinem Beispiel und kann jemand bieten eine sauberere Lösung für mein Problem beheben.
- Sie sollten immer
TypeError: array.split is not a function
jedes mal, so würde es nie den Fehler Sie sagen, Sie sind immer which returns "one","two","three"
- Nein ist es nicht ... es wird auch beklagt, dass array.split ist nicht eine Funktion - ich würde vorschlagen, wenn Sie Hilfe benötigen mit code, wenn Sie es vereinfachen, stellen Sie sicher, es zeigt den gleichen Fehler, der code ist mit- Die Methode split() teilt einen String-Objekt in ein array von Zeichenketten, die durch die Trennung der string in Teilstrings, die aus der doc
- Es gibt keine
split
- Methode auf ein array. Auch wenn Sie mit einem string statt einem array, dann diesplit
Methode gibt ein array zurück, und es gibt keinetrim
- Methode auf ein array. Wenn Sie drücken ein Element in dem array, das du Durchlaufen, dann würden Sie nie erreichen das Ende des Arrays, es wäre eine Endlosschleife. Also, keiner der Codes, die Ihnen zeigen würde, jemals zurückzukehren überhaupt nichts. - wenn die erste Zeile ist ein Tippfehler und sollte
array = "one, two,three ";
- dann Ihr letztes Stück code ausgeführt, bis der browser hat genug und bittet Sie, stoppen Sie das Skript ausführen - sorry alle,
string.split(',').trim();
gibt ein array zurück, so dass ich nur schlecht mit dem Namen " mein Beispiel, das original der var ist ein string, wie viel Sie vorschlagen. - ja, es war ein Tippfehler, wie ich war, umschreiben eigentliche code, um ein einfacher zu Lesen zB.. ging gut, als Sie sagen können. Lust auf die Beantwortung der aktualisiert Sie scheinen kenntnisreich über das Thema.
Du musst angemeldet sein, um einen Kommentar abzugeben.
split()
funktioniert nicht auf arrays, aber auf den Saiten.Als Sie schrieb Ihre String in ein array müssen Sie die Zeichenfolge über
array[0]
, da die Zeichenfolge dem ersten Element.Wenn Sie splitted den string in ein array, können Sie die map-Funktion und die trim-jeder Wert in Ihrem neu erstellten array.
wie diese:
Kurz:
In ES6-konforme Laufzeitumgebung (ich.e: Knoten 4+) Sie können mit den Pfeiltasten Funktion, die Ihnen eine weniger ausführliche code, um Ihr Ziel zu erreichen:
Sah ich das gleiche Problem, die versuchen die Iteration der Ausgabe von String.split mit einer "for (var i in splitTokens)". Beachten Sie, es nur geschah, um mir im browser (Chrome in meinem Fall), also nicht, wenn Sie den gleichen code in einem node-Prozess.
Es verwirrte mich, bis ich hook up einen debugger und dann sah ich das problem. String.split gibt ein Array-Objekt-Instanz (splitTokens), die Funktionen ("jeder", etc). Die "for (var i in splitTokens)" - Schleife iteriert die Funktionen zu, so splitTokens[ich] war immer wieder z.B. mit der each-Funktion der Array-Instanz, die verursachten Dinge zu explodieren, wenn ich versuchte zu rufen, z.B. "trim()" (weil die Funktion Objekt nicht über eine Funktion namens trim()).