Ini terasa seperti seharusnya sederhana, jadi maaf jika saya melewatkan sesuatu di sini, tetapi saya mencoba menemukan cara sederhana untuk menggabungkan hanya string non-null atau non-kosong.
Saya memiliki beberapa bidang alamat yang berbeda:
var address;
var city;
var state;
var zip;
Nilai-nilai ini diatur berdasarkan beberapa bidang formulir di halaman dan beberapa kode js lainnya.
Saya ingin menampilkan alamat lengkap dalam a div
, dibatasi oleh koma + spasi, jadi seperti ini:
$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);
Masalahnya adalah, salah satu atau semua kolom ini boleh kosong / kosong.
Apakah ada cara sederhana untuk menggabungkan semua bidang yang tidak kosong dalam grup bidang ini, tanpa melakukan pemeriksaan panjang masing-masing bidang sebelum menambahkannya ke string?
javascript
string
froadie
sumber
sumber
Jawaban:
Mempertimbangkan
.filter(Boolean)
(yang sama dengan.filter(x => x)
) menghapus semua nilai "salah" (nulls, undefineds, string kosong dll). Jika definisi Anda tentang "kosong" berbeda, Anda harus memberikannya, misalnya:hanya akan menyimpan string yang tidak kosong dalam daftar.
-
(jawaban jquery usang)
sumber
Solusi satu baris lainnya, yang tidak membutuhkan
jQuery
:sumber
[address, city, state, zip].filter(val => val).join(', ')
Solusi Lodash :
_.filter([address, city, state, zip]).join()
sumber
Hanya:
sumber
Solusi @ aga sangat bagus, tetapi tidak berfungsi di browser lama seperti IE8 karena kurangnya Array.prototype.filter () di mesin JavaScript mereka.
Bagi mereka yang tertarik dengan solusi efisien yang bekerja di berbagai browser (termasuk IE 5.5 - 8) dan yang tidak memerlukan jQuery , lihat di bawah:
Ini mencakup beberapa pengoptimalan kinerja yang dijelaskan di MDN di sini .
Dan berikut adalah contoh penggunaan:
sumber
Mencoba
Demo: Biola
sumber
sumber