Ketika halaman memuat untuk pertama kalinya, saya perlu memeriksa apakah ada gambar di dalam image_array
dan memuat gambar terakhir.
Kalau tidak, saya menonaktifkan tombol pratinjau, mengingatkan pengguna untuk menekan tombol gambar baru dan membuat array kosong untuk meletakkan gambar;
Masalahnya adalah bahwa image_array
dalam else
kebakaran sepanjang waktu. Jika ada array - hanya menimpanya, tetapi lansiran tidak berfungsi.
if(image_array.length > 0)
$('#images').append('<img src="'+image_array[image_array.length-1]+'" class="images" id="1" />');
else{
$('#prev_image').attr('disabled', 'true');
$('#next_image').attr('disabled', 'true');
alert('Please get new image');
var image_array = [];
}
PEMBARUAN Sebelum memuat html, saya memiliki sesuatu seperti ini:
<?php if(count($images) != 0): ?>
<script type="text/javascript">
<?php echo "image_array = ".json_encode($images);?>
</script>
<?php endif; ?>
javascript
jquery
pengguna1564141
sumber
sumber
image_array
- apa yang Anda dapatkan?Jawaban:
Masalah Anda mungkin terjadi karena campuran variabel global implisit dan variabel yang diangkat. Pastikan Anda menggunakan
var
setiap kali mendeklarasikan variabel:Dan kemudian pastikan Anda tidak pernah secara tidak sengaja mendeklarasikan ulang variabel itu nanti:
sumber
image_array.length
cukup? (tanpa menentukan>0
)if (image_array && image_array.length){ // array exists and has elements
Untuk memeriksa apakah array kosong atau tidak
Cara modern, ES5 +:
Cara jadul:
Cara yang ringkas:
Cara CoffeeScript:
Mengapa?
Case Undefined
Variabel tidak terdefinisi adalah variabel yang belum Anda tetapkan untuknya.
Case Null
Secara umum, null adalah keadaan tidak memiliki nilai. Misalnya variabel nol ketika Anda melewatkan atau gagal mengambil beberapa data.
Kasus Bukan Array
Javascript memiliki sistem tipe dinamis. Ini berarti kami tidak dapat menjamin jenis objek apa yang dipegang variabel. Ada kemungkinan bahwa kita tidak berbicara dengan contoh
Array
.Case Empty Array
Sekarang karena kami menguji semua kemungkinan lain, kami sedang berbicara dengan contoh
Array
. Untuk memastikan itu tidak kosong, kami bertanya tentang jumlah elemen yang dipegangnya, dan memastikan elemennya lebih dari nol.sumber
(typeof array != "undefined" && array.length > 0)
karena jikaarray
nol kita akan dapatkanTypeError: Cannot read property 'length' of null
.!(typeof array !== "undefined") || !(array.length > 0)
? Baru mencobanya, ada kesalahan yang sama. Bisakah Anda memberi kami contoh lengkap tentang cara menggunakan||
?(typeof array != "undefined" || array.length > 0)
(typeof array != "undefined" || array.length > 0)
kembalitrue
jikaarray = null
.!(typeof array != "undefined" || array.length > 0)
kembalifalse
jikaarray = [1,2]
. Maaf karena tidak mengerti, tetapi @Elsa dapatkah Anda memberikan contoh yang berfungsi? Terima kasih sebelumnya.Bagaimana dengan (ECMA 5.1):
sumber
.. && image_array.length)
. IMHO, sementara Anda dapat dengan aman bergantung pada pengetikan JS yang longgar, untuk mengonversi0
bilangan bulat menjadifalse
dannon-zero
bilangan bulattrue
, saya menganggapnya lebih baik, agar mudah dibaca di masa depan, untuk "mengatakan apa yang Anda maksudkan". Saya akan lakukan.. && image_array.length > 0)
.Inilah yang saya gunakan. Kondisi pertama mencakup kebenaran, yang memiliki nol dan tidak terdefinisi. Kondisi kedua memeriksa array kosong.
atau terima kasih atas komentar tsemer saya menambahkan versi kedua
Lalu saya membuat tes untuk kondisi kedua, menggunakan Scratchpad di Firefox:
yang juga membuktikan itu
if(array2 && array2.length)
danif(array2 && array2.length > 0)
persis melakukan hal yang samasumber
if (arrayName && arrayName.length)
var arrayName = undefined; var isNotEmpty = arrayName && array.length > 0
tipe isNotEmpty tidak akan boolean, itu akan menjadi boolean | undefined.Kamu harus menggunakan:
sumber
Jika Anda ingin menguji apakah variabel array gambar telah ditentukan, Anda dapat melakukannya seperti ini
sumber
JavaScript
Lodash & Garis Bawah
sumber
Anda dapat menggunakan jQuery's
isEmptyObject()
untuk memeriksa apakah array mengandung elemen atau tidak.Sumber: https://api.jquery.com/jQuery.isEmptyObject/
sumber
Cara sederhana yang tidak menghasilkan pengecualian jika tidak ada dan dikonversi ke boolean:
Contoh:
sumber
Bagaimana dengan ini ? memeriksa panjang array yang tidak terdefinisi dapat membuang pengecualian.
sumber
if
dapat dihindari menggunakan&&
, karenaimage_array && image_array.length
, akan korsleting jikaimage_array
tidak ada.Bagi saya yakin beberapa jawaban dengan nilai tinggi "berfungsi" ketika saya memasukkannya ke jsfiddle, tetapi ketika saya memiliki jumlah array yang dihasilkan secara dinamis, banyak kode ini dalam jawaban yang tidak berfungsi untuk saya.
Inilah yang bekerja untuk saya.
Perhatikan, TIDAK ada kutipan di sekitar yang tidak ditentukan dan saya tidak peduli dengan panjangnya.
sumber
typeof
mengembalikan string, membandingkannya denganundefined
selalu flasy 2) Anda tidak memeriksa apakahfrom
didefinisikan. kode Anda di atas akan menimbulkan kesalahan jika tidakrantai opsional
Saat proposal perangkaian opsional mencapai tahap 4 dan mendapatkan dukungan yang lebih luas, ada cara yang sangat elegan untuk melakukan ini
sumber
Saya menemukan masalah ini cukup banyak di Javascript. Bagi saya cara terbaik untuk melakukannya adalah dengan melakukan pemeriksaan yang sangat luas sebelum memeriksa panjang. Saya melihat beberapa solusi lain dalam T&J ini, tetapi saya ingin dapat memeriksa salah
null
atauundefined
atau nilai salah lainnya.Ini pertama akan memeriksa
undefined
,null
atau nilai-nilai palsu lainnya. Jika ada yang benar, itu akan menyelesaikan boolean karena ini adalahOR
. Maka pemeriksaan yang lebih berisikoarray.length
, yang dapat membuat kesalahan kita jika array tidak didefinisikan, dapat diperiksa. Ini tidak akan pernah tercapai jikaarray
iniundefined
ataunull
, sehingga pemesanan kondisi sangat penting.sumber
Menggunakan undescore atau lodash :
_.isArray(image_array) && !_.isEmpty(image_array)
sumber
Inilah biola saya yang digunakan untuk memeriksa masalah ini ( sumber )
sumber
Jika Anda tidak memiliki variabel yang dideklarasikan sebagai array, Anda dapat membuat tanda centang:
Ini memeriksa apakah variabel x ada dan jika ada, memeriksa apakah itu array yang diisi. selain itu menciptakan array kosong (atau Anda dapat melakukan hal-hal lain);
Jika Anda yakin ada variabel array yang dibuat ada pemeriksaan sederhana:
Anda dapat memeriksa biola saya di sini dengan menunjukkan cara yang paling mungkin untuk memeriksa array.
sumber
Anda harus melakukan ini
sumber
Saya pikir kode sederhana ini akan berfungsi:
sumber
dalam ts
dalam html
(foto == undefined ||! (isArray (foto) && photos.length> 0))
sumber
Ketika Anda membuat image_array Anda, itu kosong, oleh karena itu image_array.length Anda adalah 0
Seperti yang dinyatakan dalam komentar di bawah ini, saya mengedit jawaban saya berdasarkan jawaban pertanyaan ini ):
di dalam kurung lain tidak mengubah apa pun ke image_array yang didefinisikan sebelumnya dalam kode
sumber
[]var image_array = []
di dalam blok lain, saya tidak yakin itu bisa dilihat di luar. Cobaimage_array = []