Parece que debería ser simple, lo siento si me falta algo aquí, pero estoy tratando de encontrar una forma simple de concatenar solo cadenas no nulas o no vacías.
Tengo varios campos de dirección distintos:
var address;
var city;
var state;
var zip;
Los valores para estos se establecen en función de algunos campos de formulario en la página y algún otro código js.
Quiero generar la dirección completa en a div
, delimitada por coma + espacio, algo como esto:
$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);
El problema es que uno o todos estos campos podrían ser nulos o estar vacíos.
¿Existe alguna forma sencilla de unir todos los campos no vacíos en este grupo de campos, sin hacer una verificación de la longitud de cada uno individualmente antes de agregarlo a la cadena?
javascript
string
froadie
fuente
fuente
Respuestas:
Considerar
.filter(Boolean)
(que es lo mismo que.filter(x => x)
) elimina todos los valores "falsos" (nulos, indefinidos, cadenas vacías, etc.). Si su definición de "vacío" es diferente, deberá proporcionarla, por ejemplo:solo mantendrá las cadenas no vacías en la lista.
-
(respuesta de jquery obsoleta)
fuente
Otra solución de una línea, que no requiere
jQuery
:fuente
[address, city, state, zip].filter(val => val).join(', ')
Solución Lodash :
_.filter([address, city, state, zip]).join()
fuente
Sólo:
fuente
La solución de @ aga es excelente, pero no funciona en navegadores más antiguos como IE8 debido a la falta de Array.prototype.filter () en sus motores JavaScript.
Para aquellos que estén interesados en una solución eficiente que funcione en una amplia gama de navegadores (incluido IE 5.5 - 8) y que no requiera jQuery , consulte a continuación:
Incluye algunas optimizaciones de rendimiento descritas en MDN aquí .
Y aquí hay un ejemplo de uso:
fuente
Tratar
Demostración: violín
fuente
fuente