در جاوا اسکریپت، روش های زیادی برای تبدیل بین انواع داده. ما قبلاً به نحوه تبدیل یک عدد به رشته پرداخته ایم. در این آموزش کوتاه، نحوه تبدیل رشته به عدد در جاوا اسکریپت را بررسی خواهیم کرد. موقعیت های زیادی وجود دارد که در آن یک عدد ممکن است به عنوان یک رشته ذخیره شود. به عنوان مثال، مقادیر دریافت شده از یک عنصر فرم همیشه رشته ای هستند. سیستم مدیریت محتوا چیست؟
به طور کلی، میتوانید با رشته جاوا اسکریپتی که شامل یک عدد (و فقط یک عدد) است، مانند یک عدد رفتار کنید و جاوا اسکریپت تبدیل رشته به عدد را به صورت خودکار برای شما انجام میدهد. با این حال، گاهی اوقات لازم است یک عدد را از یک رشته استخراج کنید، یا کنترل بیشتری بر نحوه انجام تبدیل اعمال کنید.
در این نکته سریع، سه روش برای تبدیل رشته به عدد را پوشش خواهیم داد.
تبدیل رشته به عدد با استفاده از عدد
مستقیم ترین راه برای تبدیل رشته به عدد در جاوا اسکریپت استفاده از تابع سازنده Number
داخلی است. به عنوان مثال:
const str = "10"
کنسول.ورود(str);
کنسول.ورود(نوع str);
شماره const = شماره (str);
کنسول.ورود(شماره);
کنسول.ورود(نوع شماره);
هنگام ثبت مقدار str
و نوع آن در کنسول، نتیجه به ترتیب 10
به عنوان رشته و رشته
است. پس از تبدیل آن، نتیجه به ترتیب 10
به عنوان عدد و شماره
است.
میتوانید این مثال را در نسخه نمایشی CodePen زیر مشاهده کنید.
به قلم
تبدیل رشته به عدد با Number() مراجعه کنید SitePoint (@SitePoint)
در CodePen .
لطفاً توجه داشته باشید که اگر یک رشته غیر عددی را به عددی ارسال کنید، NaN برگردانده خواهد شد.
تبدیل رشته به عدد با استفاده از parseInt() و parseFloat()
رویکرد دیگر استفاده از parseInt()
و parseFloat()
است. همانطور که می توانید بگویید، parseInt()
یک رشته را به یک عدد صحیح تجزیه می کند، در حالی که parseFloat()
یک رشته را به عددی با اعشار تجزیه می کند.
به عنوان مثال:
const str = "10.9"
کنسول.ورود(str);
کنسول.ورود(نوع str);
const intNumber = parseInt(str);
کنسول.ورود(intNumber);
کنسول.ورود(نوع intNumber);
const floatNumber = parseFloat(str);
کنسول.ورود(floatNumber);
کنسول.ورود(نوع floatNumber);
مشابه روش اول، هنگام ثبت مقدار str
و نوع آن در کنسول، نتیجه 10.1
به صورت رشته و رشته
است. کد> به ترتیب. با این حال، هنگام تجزیه str
با استفاده از parseInt
، مقدار intNumber
به 10
تبدیل میشود و نوع آن number است.
.
از سوی دیگر، هنگام تجزیه str
با استفاده از parseFloat
، مقدار floatNumber
به 10.1
تبدیل میشود. شماره و نوع آن شماره
است.
میتوانید این مثال را در نسخه نمایشی CodePen زیر مشاهده کنید.
به قلم مراجعه کنید
تبدیل رشته به عدد با parseInt() و parseFloat() توسط SitePoint (@SitePoint)
در CodePen.
استدلال دوم parseInt
parseInt()
آرگومان دومی را می گیرد که پایه عددی را که باید از رشته تجزیه شود را مشخص می کند. این آرگومان در واقع اختیاری است، اما به شدت توصیه میشود که همیشه آن را ارائه کنید.
بدون این آرگومان دوم، parseInt
تشخیص خودکار رادیکس را انجام می دهد. یعنی پایه یک عدد را با فرمت آن در رشته تشخیص می دهد. عددی که از 0x
یا 0X
شروع میشود، هگزادسیمال در نظر گرفته میشود (پایه 16)، و همه اعداد دیگر اعشاری در نظر گرفته میشوند.
بنابراین، برای مثال، اگر بخواهید parseInt("08")
را فراخوانی کنید، مقدار ورودی یک عدد اکتالی در نظر گرفته می شود. اما 8 یک رقم هشتی نیست (زیرا شماره هشتی 0-7 است)، بنابراین این تابع مقدار صفر را برمی گرداند نه هشت.
برای جلوگیری از هرگونه سردرگمی، همیشه هنگام استفاده از parseInt()
پایه را مشخص کنید.
تبدیل رشته به عدد با استفاده از Unary Plus
راه سوم برای تبدیل رشته به عدد استفاده از بعلاوه unary (+
) است. اگر به علاوه unary قبل از یک عملوند استفاده شود، سعی می کند آن را به یک عدد تبدیل کند. بنابراین، اگر عملوند رشته ای باشد که شامل یک عدد باشد، به علاوه unary آن را به یک عدد تبدیل می کند.
به عنوان مثال:
const str = "10";
کنسول.ورود(نوع str);
کنسول.ورود(+str);
کنسول.ورود(نوع +str);
هنگامی که نوع str
را وارد میکنید، همانطور که انتظار میرود، string
است. با این حال، وقتی مقدار +str
و نوع آن را وارد میکنید، به ترتیب 10
و number
در کنسول ثبت میشوند.
میتوانید این مثال را در نسخه نمایشی CodePen زیر مشاهده کنید.
به قلم
استفاده از Unary برای تبدیل رشته ها توسط SitePoint (@SitePoint)
در CodePen .
نحوه مدیریت کاراکترهای غیر عددی در رشته ها
در نظر گرفتن مواردی که یک رشته ممکن است دارای کاراکترهایی غیر از اعداد باشد و اینکه هر رویکرد چگونه با آن برخورد میکند، مهم است.
هنگام استفاده از Number()
، اگر رشته شامل کاراکترهایی غیر از اعداد، علامتهای مثبت(+) و منهای(-) در ابتدا یا اعشار باشد، مقدار برگشتی مقدار ویژه است. NaN (عدد نیست). NaN یک ویژگی جهانی است که نشان دهنده Not-a-Number است. با برخی عملیات عددی برگردانده میشود عملوندها یا پارامترهای آن عملیات یا اعداد نیستند یا نمی توانند برای آن عملیات ریاضی خاص استفاده شوند.
از طرف دیگر، parseInt()
و parseFloat()
اگر عدد در ابتدای رشته باشد رشته را تجزیه می کنند. بقیه کاراکترها را حذف می کند و عددی را که در ابتدای رشته با آن مواجه شده است می گیرد. با این حال، اگر رشته با کاراکترهایی غیر از اعداد، علامتهای مثبت(+) و منهای(-) در ابتدا یا نقاط اعشاری شروع میشود، مقدار برگشتی مقدار ویژه NaN (Not-a-Number) است.
میتوانید آن را در حالت نمایشی CodePen زیر مشاهده کنید.
به قلم
تفاوت بین عدد و parseInt توسط SitePoint (@SitePoint)
در CodePen .
همانطور که می بینید، Number()
NaN را برمی گرداند زیرا رشته حاوی px
است. با این حال، parseInt()
10
را برمیگرداند زیرا در ابتدای رشته است.
با استفاده از تابع سراسری isNaN()
می توانید بررسی کنید که آیا یک مقدار NaN است یا خیر.
نتیجه گیری
این آموزش کوتاه به سه روش برای تبدیل رشته به عدد در جاوا اسکریپت پرداخته است. Number()
می تواند یک رشته را به عدد تبدیل کند، خواه شناور باشد یا عدد صحیح. با این حال، اگر رشته شامل کاراکترهای دیگری باشد، NaN را برمی گرداند. اگر میخواهید از تبدیل دقیق رشته اطمینان حاصل کنید، این کار مفید است.
از سوی دیگر، parseInt()
و parseFloat()
رویکردهای انعطافپذیرتری از نظر مدیریت کاراکترهای دیگر در عدد هستند. با این حال، این دو تابع در برخی موارد نمی توانند به جای یکدیگر استفاده شوند. به عنوان مثال، اگر عدد موجود در رشته یک شناور باشد و از parseInt()
استفاده کنید، مقدار نادرستی در مقایسه با رشته دریافت خواهید کرد.
اگرچه استفاده از unary آسان است، اما می تواند خوانایی کد شما را کاهش دهد. هر روشی را که انتخاب کنید، مهم است که مراقب مواردی باشید که نتیجه ممکن است NaN باشد.
اگر این مقاله برای شما مفید بود، ممکن است از موارد زیر نیز لذت ببرید:
منبع :