Dies scheint einfach zu sein. Es tut mir leid, wenn ich hier etwas vermisse, aber ich versuche einen einfachen Weg zu finden, um nur nicht null oder nicht leere Zeichenfolgen zu verketten.
Ich habe mehrere unterschiedliche Adressfelder:
var address;
var city;
var state;
var zip;
Die Werte für diese werden basierend auf einigen Formularfeldern auf der Seite und einem anderen js-Code festgelegt.
Ich möchte die vollständige Adresse in einem div
durch Komma + Leerzeichen getrennten a ausgeben , also ungefähr so:
$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);
Das Problem ist, dass eines oder alle dieser Felder null / leer sein können.
Gibt es eine einfache Möglichkeit, alle nicht leeren Felder in dieser Gruppe von Feldern zu verbinden, ohne die Länge jedes einzelnen Felds einzeln zu überprüfen, bevor es zur Zeichenfolge hinzugefügt wird?
javascript
string
froadie
quelle
quelle
Antworten:
Erwägen
.filter(Boolean)
(das ist das gleiche wie.filter(x => x)
) entfernt alle "falschen" Werte (Nullen, Undefinierte, leere Zeichenfolgen usw.). Wenn Ihre Definition von "leer" anders ist, müssen Sie sie angeben, zum Beispiel:behält nur nicht leere Zeichenfolgen in der Liste bei.
- -
(veraltete jquery Antwort)
quelle
Noch eine einzeilige Lösung, die nicht erfordert
jQuery
:quelle
[address, city, state, zip].filter(val => val).join(', ')
Lodash- Lösung:
_.filter([address, city, state, zip]).join()
quelle
Gerade:
quelle
Die Lösung von @ aga ist großartig, funktioniert jedoch in älteren Browsern wie IE8 nicht, da Array.prototype.filter () in ihren JavaScript-Engines fehlt .
Für diejenigen, die an einer effizienten Lösung interessiert sind, die in einer Vielzahl von Browsern (einschließlich IE 5.5 - 8) funktioniert und für die keine jQuery erforderlich ist , siehe unten:
Es enthält einige Leistungsoptimierungen, die hier auf MDN beschrieben werden .
Und hier ist ein Anwendungsbeispiel:
quelle
Versuchen
Demo: Geige
quelle
quelle