दिलचस्प पोस्ट
एएसपी.नेट एमवीसी 5 – पहचान वर्तमान अनुप्रयोग उपयोगकर्ता कैसे प्राप्त करें वेक्टर विकास के बारे में लोड किए गए छवियों के लिए jQuery का ईवेंट "सामग्री-प्रकार: एप्लिकेशन / जेएसन; charset = utf-8 "वास्तव में मतलब है? जर्सी क्लाइंट का उपयोग कर HTTPS मैं एक HTML बटन कैसे पृष्ठ को पुनः लोड नहीं कर सकता सी # कंसोल अनुप्रयोग में ऑरेंज पाठ का रंग? जावा का उपयोग करते हुए HTML फ़ाइल लिखें एचटीएमएल चार्सेट एन्कोडिंग के साथ PHP गड़बड़ रूबी में संख्याओं की सरणी कैसे जोड़ती है? Nginx समान आईपी पर विभिन्न डोमेन IE9 में सीएसएस 3 पाठ-छाया वस्तुओं पर माउस व्हील को अक्षम करें wpf में नियंत्रण चेकबॉक्स के साथ Android सूचीदृश्य और सभी क्लिक करने योग्य org.hibernate.PersistentObjectException: अलग इकाई जारी रखने के लिए पारित कर दिया

जावास्क्रिप्ट में स्ट्रिंग समानता की जाँच करने का सही तरीका क्या है?

JavaScript में स्ट्रिंग के बीच समानता की जांच करने का सही तरीका क्या है?

Solutions Collecting From Web of "जावास्क्रिप्ट में स्ट्रिंग समानता की जाँच करने का सही तरीका क्या है?"

हमेशा जब तक आप पूरी तरह से == और === ऑपरेटर के इस्तेमाल के मतभेद और निहितार्थ को समझते हैं, तो === ऑपरेटर का उपयोग करें क्योंकि यह आपको अस्पष्ट (गैर-स्पष्ट) कीड़े और डब्ल्यूटीएफ से बचाएगा। "नियमित" == ऑपरेटर आंतरिक प्रकार के दबाव के कारण बहुत अप्रत्याशित परिणाम हो सकते हैं, इसलिए === का उपयोग करना हमेशा अनुशंसित दृष्टिकोण है।

इस में अंतर्दृष्टि के लिए, और अन्य "अच्छा बनाम बुरा" जावास्क्रिप्ट के हिस्से श्री डगलस क्रॉकफोर्ड और उनके काम पर पढ़ा। एक महान Google टेक टॉक है जहां वह बहुत अच्छी जानकारी का सारांश देता है: http://www.youtube.com/watch?v=hQVTIJBZook


अद्यतन करें:

काइल सिम्पसन द्वारा तुम्हे पता नहीं एसएस श्रृंखला उत्कृष्ट (और ऑनलाइन पढ़ने के लिए निशुल्क) है। श्रृंखला सामान्य भाषा के गलत अर्थ वाले क्षेत्र में जाती है और "खराब भागों" बताती है जो क्रॉकफोर्ड आपको सुझाव देती है कि आप बचें उन्हें समझकर आप उन का उचित उपयोग कर सकते हैं और नुकसान से बच सकते हैं

" ऊपर और गोइंग " किताब में समानता का एक खंड शामिल होता है, ढीले ( == ) बनाम सख्त ( === ) ऑपरेटरों का उपयोग करने के लिए इस विशिष्ट सारांश के साथ:

कुछ साधारण ले जाने के लिए विवरणों की पूरी जानकारी को उबालने के लिए और विभिन्न परिस्थितियों में == या === का उपयोग करने के लिए आपको यह जानने में मदद करें कि ये मेरे सरल नियम हैं:

  • यदि किसी मूल्य की तुलना में मूल्य (उर्फ साइड) true या false मान हो, तो == से बचें और === उपयोग करें
  • यदि किसी भी मूल्य की तुलना इन विशिष्ट मानों ( 0 , "" , या [] – खाली एरे से हो सकती है), == से बचें और === उपयोग करें
  • अन्य सभी मामलों में, आप == का उपयोग करने के लिए सुरक्षित हैं न केवल यह सुरक्षित है, लेकिन कई मामलों में यह आपके कोड को ऐसे तरीके से सरल करता है जिससे पठनीयता में सुधार होता है।

मैं अभी भी डेवलपर्स के लिए क्रॉकफोर्ड की बात की सिफारिश करता हूं जो वास्तव में जावास्क्रिप्ट को समझने के लिए समय का निवेश नहीं करना चाहते हैं-यह एक डेवलपर के लिए अच्छी सलाह है जो केवल कभी-कभी जावास्क्रिप्ट में काम करता है

यदि आप जानते हैं कि वे तार हैं, तो प्रकार की जांच करने की कोई आवश्यकता नहीं है।

 "a" == "b" 

हालांकि, ध्यान दें कि स्ट्रिंग ऑब्जेक्ट समान नहीं होंगे।

 new String("a") == new String("a") 

झूठी वापसी करेगा

स्ट्रिंग ऑब्जेक्ट के लिए एक आदिम में कनवर्ट करने के लिए valueOf () विधि को कॉल करें,

 new String("a").valueOf() == new String("a").valueOf() 

सच वापस करेगा

जवाब के लिए सिर्फ एक अतिरिक्त: यदि ये सभी विधियां झूठी झूठी हैं, भले ही तार समान लग रहे हों, तो यह संभव है कि बाईं ओर या एक स्ट्रिंग के दाईं ओर एक श्वेत स्थान हो। इसलिए, बस तुलना करने से पहले स्ट्रिंग्स के अंत में एक। .trim() डालें:

 if(s1.trim() === s2.trim()) {...} 

मुझे पता है कि गलत क्या है, यह जानने के लिए मैंने घंटों का समय गंवा दिया है। उम्मीद है कि यह किसी को मदद मिलेगी!

जब तक आप वास्तव में पता नहीं कि दबाव क्या काम करता है, आपको == से बचना चाहिए और इसके बजाय पहचान ऑपरेटर === उपयोग करना चाहिए। लेकिन आपको यह समझना चाहिए कि यह कैसे काम करता है ।

यदि आप == उपयोग करते हैं, तो आप भाषा को कुछ प्रकार के जबरन करते हैं, उदाहरण के लिए:

 "1" == 1 // true "0" == false // true [] == false // true 

जैसा डगलस क्रॉकफोर्ड ने अपनी पुस्तक में कहा है:

यह हमेशा पहचान ऑपरेटर का बेहतर इस्तेमाल करता है।

इस प्रश्न के लिए मुझे किसने प्रेरित किया, padding और white-spaces

मेरे मामले की जांच करें

  if (title === "this word") doSomething(); 

और शीर्षक " this word"

यहां छवि विवरण दर्ज करें

तो शायद आप इस तरह trim समारोह का उपयोग करना होगा

 var title = $(this).text().trim(); 

वास्तव में दो तरीके हैं जिनमें स्ट्रिंग जावास्क्रिप्ट में की जा सकती है।

  1. var str = 'Javascript'; यह एक आदिम स्ट्रिंग मान बनाता है।

  2. var obj = new String('Javascript'); यह टाइप String का आवरण वस्तु बनाता है।

    typeof str // string
    typeof obj // object

तो समानता की जांच करने का सबसे अच्छा तरीका === ऑपरेटर का उपयोग कर रहा है क्योंकि यह मूल्य की जांच करता है और साथ ही दोनों ऑपरेंड्स के प्रकार

यदि आप दो वस्तुओं के बीच समानता की जांच करना चाहते हैं तो String.prototype.valueOf का उपयोग करना सही तरीका है।

 new String('javascript').valueOf() == new String('javascript').valueOf() 

उदाहरण के साथ जावास्क्रिप्ट टाइप-कनवर्टिंग समता तुलना को समझाने के लिए मैंने कुछ कोड प्रदान किया है (नीचे के समान है)।

 <!-- JavaScript has both strict and type-converting equality comparison. For strict equality the objects being compared must have the same type, presented by === (the triple equal sign). For strict equality, the objects being compared must be equal in type as well. Below I am going to provide you couple examples, I hope they help you! Please, don't forget to like my code. Thank you! --> <!DOCTYPE html> <html> <body> <p id="demo"></p> <script> document.write("The == and === comparison" + "<br>" + "<br>"); //document.write(" (0 == false) returns: " + (0 == false) + "<br>"); // true document.write((0 == false) + "<br>"); // true document.write((0 === false) + "<br>"); // false, because they are of a different type document.write((1 == "1" ) + "<br>"); // true, automatic type conversion for value only document.write((1 === "1" ) + "<br>"); // false, because they are of a different type document.write(('0' == false) + "<br>"); // true document.write(('0' === false) + "<br>"); // false document.write((2==='2') + "<br>"); //false document.write((2==="2") + "<br>"); //false document.write(("2"===2) + "<br>"); //true document.write((2===2) + "<br>"); //true document.write(("3"==3) + "<br>"); //true document.write((3=='3') + "<br>"); //true document.write((3==true) + "<br>"); //false /*Two numbers are strictly equal when they are numerically equal (have the same number value). */ document.write((3==3) + "<br>"); //true document.write((5.2==5.2) + "<br>"); //true /* Two strings are strictly equal when they have the same sequence of characters, same length, and same characters in corresponding positions. */ document.write(("hola"=="hola") + "<br>"); //true document.write(("hola"=="Hola") + "<br>"); //false, because they differ in a character 'H' /* NaN is not equal to anything, including NaN. Positive and negative zeros are equal to one another. */ document.write(("NaN"=="hola") + "<br>"); //false document.write(("NaN"== -3) + "<br>"); //false document.write(("NaN"== 3) + "<br>"); //false document.write(("NaN"== 2.5) + "<br>"); //false /* Two Boolean operands are strictly equal if both are true or both are false. */ document.write(((0 > 5) == (8 < 9 )) + "<br>"); // false, the first condition (0>5) returns false and (8<9) returns true document.write(((8 >= 5) == (8 == 9 )) + "<br>"); // false, the first condition (8>=5) returns true and (8==9) returns false document.write(((true) == (true)) + "<br>"); // true document.write(((false) == (false)) + "<br>"); // true /* Null and Undefined types are == (but not ===). [eg: (Null==Undefined) is true but (Null===Undefined) is false] */ document.write((null == undefined) + "<br>"); // true document.write((null === undefined) + "<br>"); // false /* Two objects are strictly equal if they refer to the same Object. */ var car1 = {type:"Fiat", model:"500", color:"white"}; var car2 = {type:"Fiat", model:"500", color:"white"}; var x = car1; document.write((car1 === car2)+ "<br> "); // false document.write((car1 == car2)+ "<br> "); // false document.write((car1 === x)+ "<br> "); // true document.write((car1 == x)+ "<br>"); // true /* DO NOT FORGET THAT = (a single equal sign) represents assignment. eg: var X = 3; Here we were assigning 3 to variable X */ </script> </body> </html>