Saya memiliki model yang disetel dengan respons JSON dari database mysql. Data model disetel dengan true atau false ke dalam bidang boolean / tinyint dalam database, yang menggunakan 1
atau 0
.
Dalam pandangan saya, saya memiliki pengikatan yang memeriksa boolean dengan garis bawah _.isBoolean
. Tentu saja, ketika model saya menerima data, sudah diatur dengan 1
atau 0
bukan benar atau salah dan _.isBoolean
cek gagal.
Apakah ada cara agar respons JSON saya dari mysql benar menjadi nilai boolean true atau false alih-alih 1
atau 0
, atau lebih disukai, apakah ada cara agar model saya memperbarui dirinya sendiri setelah diambil (dan sebelum tampilan render) untuk dilemparkan true
atau false
berdasarkan itu 1 atau 0 properti?
misalnya, data model saya terlihat seperti {"isChecked":"1"}
saat saya membutuhkannya{"isChecked":true}
Terima kasih banyak atas saran yang mungkin Anda miliki!
sumber
Jawaban:
Yang Anda butuhkan hanyalah mengonversi
string
menjadiint
dengan+
dan mengubah hasilnya menjadi boolean dengan!!
:Anda dapat melakukan manipulasi ini dengan
parse
metode:UPDATE : 7 tahun kemudian, saya menemukan
Number(string)
konversi lebih elegan. Juga mutasi suatu objek bukanlah ide terbaik. Yang telah dibilang:sumber
int
pertama.!!+"1"; // true
,!!+"0"; // false
,!!+1; // true
,!!+0; // false
Gunakan ganda bukan:
sumber
value = (!!parseInt(value) ? true : false)
!!2
atau nomor lain= false
, bukan?Berikut opsi lain yang lebih panjang tetapi mungkin lebih mudah dibaca:
sumber
Menetapkan Perbandingan untuk nilai properti
JavaScript
Anda dapat menetapkan perbandingan properti tersebut
"1"
Ini hanya mengevaluasi nilai String dari
"1"
. Variabel lain dievaluasi menjadi salah seperti aktualtypeof number
akan menjadi salah. (yaituobj["isChecked"]=1
)Jika Anda ingin tidak pandang bulu tentang
"1"
atau1
, Anda dapat menggunakan:Contoh Keluaran
PHP
Konsep yang sama di PHP
Batasan operator yang sama seperti yang disebutkan di atas untuk JavaScript berlaku.
Ganda Tidak
'Jangan ganda' juga berfungsi. Ini membingungkan ketika orang pertama kali membacanya tetapi berfungsi dalam kedua bahasa untuk nilai tipe integer / angka. Namun itu tidak berfungsi di JavaScript untuk nilai jenis string karena selalu bernilai true:
JavaScript
PHP
sumber