Кажется, это должно быть просто, извините, если мне что-то здесь не хватает, но я пытаюсь найти простой способ объединить только ненулевые или непустые строки.
У меня есть несколько разных адресных полей:
var address;
var city;
var state;
var zip;
Значения для них устанавливаются на основе некоторых полей формы на странице и некоторого другого кода js.
Я хочу вывести полный адрес в виде a div
, разделенного запятой + пробел, примерно так:
$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);
Проблема в том, что одно или все эти поля могут быть пустыми.
Есть ли простой способ объединить все непустые поля в этой группе полей, не проверяя длину каждого в отдельности перед добавлением его в строку?
javascript
string
фроди
источник
источник
Ответы:
Рассматривать
.filter(Boolean)
(то же самое, что и.filter(x => x)
) удаляет все "ложные" значения (нули, неопределенные, пустые строки и т. д.). Если ваше определение слова «пустой» отличается, вам необходимо указать его, например:сохранит в списке только непустые строки.
-
(устаревший ответ jquery)
источник
Еще одно однострочное решение, не требующее
jQuery
:источник
[address, city, state, zip].filter(val => val).join(', ')
Решение Lodash :
_.filter([address, city, state, zip]).join()
источник
Просто:
источник
Решение @aga отличное, но оно не работает в старых браузерах, таких как IE8, из-за отсутствия Array.prototype.filter () в их движках JavaScript.
Для тех, кто заинтересован в эффективном решении, работающем в широком спектре браузеров (включая IE 5.5-8) и не требующем jQuery , см. Ниже:
Он включает в себя некоторые оптимизации производительности, описанные в MDN здесь .
А вот пример использования:
источник
Пытаться
Демо: Fiddle
источник
источник