اذهب إلى المحتوى
  • 0

معرفة نوع القيمة داخل النص js

Shahad Mohammad

السؤال

كيف اكتب كود يخبرني بنوع القيمة الموجودة داخل النص؟

مثلا "mohammed"  الناتج string 

    " 5 " الناتح integer

" 5.7 " الناتج double

مع التأكيد ان كل القيم السابقة داخل علامات تنصيص

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

كدالة مضمنة في جافاسكربت، يمكنك الإستعانة بالدالة typeof التي تقوم بتحديد نوع البيانات الممرر إليها مباشرة، تقوم بإعادة أحد النتائج:

typeof {name:'Hsoub', type:'academy'} 
=> Object

typeof new Date()
=> Date

typeof [1,2] 
=> Array

typeof "string" 
=> String

typeof 1.21 
=> Number

typeof true
=> Boolean

typeof null
=> null

typeof x
=> undefined

أما ولخدمة غرضك بالضبط فستحتاجين بعض التخصيص.

يمكنك عمل ذلك وفق المنطق التالي : نقوم بعمل دالة تقوم بـ:

  • تحويل أي سلسلة نصية تمرر إليها إلى رقم Number. 
  • في كل ما هو ليس رقم أو معبر به عن رقم يتم إرجاع NaN. 
  • في حالة المعامل الممرر رقم : يتم التحقق ما ان كان هذا الرقم double أو integer.
  • في حالة لم يكن المعامل الممرر رقم : يتم التحقق من نوعه عن طريق typeof. 

مثال عملي: 

function getType(data){
    var n = Number(data);
    if(! Number.isNaN(n)){
       if(n === +n && n !== (n|0)) return 'double';
       
       if(n === +n && n === (n|0)) return 'integer'; 
    }
    
    else{
       return typeof data;
    }
}

getType(1); // integer
getType("1"); // integer
getType(1.5); // double
getType("1.5"); // double
getType("sara"); // string
getType([2,4,42]); // array

كتابة أكثر اختصارا:

function getType(data){
    var n = Number(data);
    
    return (n === +n && n !== (n|0)) ? 'double' :
       
    (n === +n && n === (n|0)) ? 'integer' : typeof data;
}

تعرف أكثر عن  الأعداد (numbers) في جافاسكربت.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 33 دقائق مضت قال Shahad Mohammad:

فهمت الكود شكرا لكن ممكنتوضح معنى هذا السطر


(n === +n && n !== (n|0) ?

ما معنى ان نضع + أمام المتغير n ؟ 

وما معنى (n|0) 

وشكرا 

تماثل الكتابة هاته:

(n === +n && n !== (n|0)) ?

نفس الكتابة:

if(n === +n && n !== (n|0)){


}

أما عن المعاملين + و | ف:

  • المعامل | في n|0 يستعمل بنفس غرض OR أو || ولكنه يستهدف الأعداد الصحيحة integers، فهاته الكتابة n|0 تعني قم بإعادة 0 في حالة لم يكن العدد n صحيحا integer.
  • المعامل + في n+ فهو ليس إلا إشارة موجبة للتحقق من أن نوع n يماثل نوع n موجبا، فهاته الكتابة n+ تعني موجب n.   

لنقم بتجزئة الشرط حتى نقوم بفهمه جيدا:

if(n === +n && n !== (n|0)) return 'double';

/*//////////////////// لشطر الأول*/
n === +n

التحقق من ما ان كانت قيمة n تساوي القيمة الموجبة لـ n.
فيما يعني ، أنه ان كان قيمة عددية فسيتم إعادة خطأ وإلا فإن الشرط محقق وصحيح.

/*//////////////////// لشطر الثاني*/
n !== (n|0)

التحقق من ما ان كان نوع n مساويا لناتج n|0 (يكون الناتج n في حالة كون n عددا صحيحا أو صفرا فيما غير ذلك).

إستنتاجات:

  • n مساو لقيمته الموجبة ===> n عدد. (مثال : 5 مساو لـ 5+ و 2.1 أيضا مساو 2.1+)
  • n غير مساو لقيمته الموجبة ===> n ليس عددا. ("hsoub" ليس مساويا لـناتج "hsoub"+ والتي هي NaN).

 

  • نوع n مساو لناتج n|0 (تذكر: n أو صفر) ===> n عدد صحيح integer. (مثال: 5 مساو لـ ناتج 0|5 والذي هو 5 لأن هذا الأخير صحيح).
  • نوع n غير مساو لناتج n|0 (تذكر: n أو صفر)  ===>  n عدد عشري double. (مثال: 2.1 غير مساو لناتج 0|2.1 والذي هو 0 لأن هذا الأخير عشري).

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...