13
0

آیا می‌تونم یه رشته که مقدار بولین رو نشون میده (مثل 'true' یا 'false') به نوع اصلی بولین تو جاوااسکریپت تبدیل کنم؟

من یه فرم مخفی تو HTML دارم که بر اساس انتخاب کاربر توی یه لیست آپدیت میشه. این فرم چندتا فیلد داره که مقدار بولین رو نشون میدن و به صورت داینامیک با مقدار بولین واقعی پر میشن. ولی وقتی این مقدار توی فیلد مخفی قرار می‌گیره، به رشته تبدیل میشه.

تنها راهی که پیدا کردم تا مقدار بولین فیلد رو بعد از تبدیل به رشته بفهمم، این بود که به مقدار رشته‌ای اون تکیه کنم.

var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';

راه بهتری برای انجام این کار وجود داره؟

0

کار زیر رو انجام بده:

var isTrueSet = (myValue === 'true');

با استفاده از عملگر هویت (===)، که هیچ تبدیل نوع ضمنی رو وقتی متغیرهای مقایسه شده نوع‌های مختلفی دارن، انجام نمی‌ده.

این کار باعث می‌شه که isTrueSet به مقدار بولین true تنظیم بشه اگر رشته "true" باشه و به مقدار بولین false اگر رشته "false" باشه یا اصلاً تنظیم نشه.

برای غیرحساس به حروف بزرگ و کوچک، امتحان کن:

var isTrueSet = /^true$/i.test(myValue);
// or
var isTrueSet = (myValue?.toLowerCase?.() === 'true');
// or
var isTrueSet = (String(myValue).toLowerCase() === 'true');

این کار رو انجام نده:

احتمالاً باید درباره استفاده از این دو روش برای نیازهای خاص خود محتاط باشی:

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true

هر رشته‌ای که خالی نباشه با استفاده از این روش‌ها به true ارزیابی میشه. با اینکه این روش‌ها از نظر تبدیل به بولین تمیزترین راه‌ها هستن، فکر می‌کنم این‌ها چیزی نیستن که دنبالش هستی.

ارسال پاسخ به سوال بالا

برای ارسال پاسخ باید وارد اکانتت بشی

اگر پاسخت شامل تکه کدی میشه، از منوی ویرایشگر پایین، تکه کدی که نوشتی رو انتخاب کن و بعد از طریق زبان کدی که نوشتی رو انتخاب کن تا کدت داخل بلاک مخصوص زبان خودش قرار بگیره و کدت خواناتر برای بقیه نشون داده بشه

اگه پاسخت رفرنسی داره، لینک رفرنس رو هم بذار تا پاسختت کاملتر و معتبر تر بشه