जावास्क्रिप्ट स्ट्रिंग और संख्या रूपांतरण


89

मैं जावास्क्रिप्ट में निम्नलिखित कैसे कर सकता हूं?

  1. कॉनकनेट "1", "2", "3" को "123" में

  2. "123" को 123 में बदलें

  3. 123 + 100 = 223 जोड़ें

  4. गुप्त 223 "223" में


42
लगभग सभी जावास्क्रिप्ट किताबें जो मैंने इन मुद्दों के साथ पढ़ी हैं। किन्तु वह ठीक है। सवालों का जवाब देना StackOverflow के बारे में क्या है। @ शशि अलमोसरी - SO का "मतलबी मत" नियम है। मैं उन लोगों को नहीं देखता जो यहाँ सवाल पूछते हैं, क्योंकि यह जगह की बात है।
नोसरेडना

4
@ नोसेरेडना: मैं पूरी तरह से सवाल पूछना समझता हूं, मुझे उनका जवाब देने से ज्यादा कुछ भी पसंद नहीं है, लेकिन मुझे लगता है कि आपने जो तथ्य आजमाया है वह बेहतर शिष्टाचार है, तो बस एक उत्तर की उम्मीद है और सीखने के एक व्यक्तिगत अनुभव के लिए भी बेहतर है। सिर्फ मेरी राय, मतलब होने की कोशिश नहीं! :)
Shadi Almosri

1
@ शदी, तो सवाल कैसे पूछा जाना चाहिए था? पहले से ही उत्तर की तलाश में होने की घोषणा के साथ?
नोसरेडना

1
जब मैंने पहली बार इसे देखा, तो इसने मुझे होमवर्क के रूप में मारा, लेकिन जैसा कि मैंने इसे फिर से सोचा था, मुझे नहीं लगा कि यह ऐसा लगता है कि कोई जावास्क्रिप्ट में प्रयोग कर रहा है और अप्रत्याशित परिणाम प्राप्त कर रहा है और इसे नीचे गिराना चाहता है। उस ने कहा, मुझे आश्चर्य है कि अगर stackoverflow.com/faq में छात्रों के लिए सम्मान कोड जैसा कुछ शामिल हो सकता है। हम यहां एक वैश्विक विश्वविद्यालय की तरह हैं, और मुझे नहीं लगता कि यह पता लगाने की कोशिश करना पागलपन है कि इस जगह के लिए नैतिकता का एक सेट क्या हो सकता है। या शायद यह पागल है। :-)
आर्टलंग

6
@ शदी, अच्छा है, सकारात्मक पक्ष पर, सवाल और जवाब स्टैकऑवरफ्लो में हैं, और उम्मीद है कि अन्य लोगों को मदद मिलेगी। मैं देखता हूं कि लोग हर समय इस सामान पर अटक जाते हैं, खासकर जब जावा जैसी भाषाओं से आते हैं। एक कारण है कि लोग इसे बार-बार पूछते हैं - ऐसा इसलिए है क्योंकि वे सोचते हैं कि वे जानते हैं कि जावास्क्रिप्ट में कैसे काम होता है, लेकिन वे नहीं करते हैं। वे जेएस के बाहर के अनुभव के आधार पर धारणा बनाते हैं। यही कारण है कि तार और संख्याओं को जोड़ने के साथ कुछ सरल परीक्षणों को आज़माना और यूनीरी प्लस और माइनस आज़माना इतना उपयोगी है।
नोसरेडना

जवाबों:


120

आप से परिचित होना चाहते हैं parseInt()और toString()

और आपके टूलकिट में उपयोगी यह जानने के लिए एक चर को देखना होगा कि यह किस प्रकार का है typeof:

<script type="text/javascript">
    /**
     * print out the value and the type of the variable passed in
     */

    function printWithType(val) {
        document.write('<pre>');
        document.write(val);
        document.write(' ');
        document.writeln(typeof val);
        document.write('</pre>');
    }

    var a = "1", b = "2", c = "3", result;

    // Step (1) Concatenate "1", "2", "3" into "123"
    // - concatenation operator is just "+", as long
    //   as all the items are strings, this works
    result = a + b + c;
    printWithType(result); //123 string

    // - If they were not strings you could do
    result = a.toString() + b.toString() + c.toString();
    printWithType(result); // 123 string

    // Step (2) Convert "123" into 123
    result = parseInt(result,10);
    printWithType(result); // 123 number

    // Step (3) Add 123 + 100 = 223
    result = result + 100;
    printWithType(result); // 223 number

    // Step (4) Convert 223 into "223"
    result = result.toString(); //
    printWithType(result); // 223 string

    // If you concatenate a number with a 
    // blank string, you get a string    
    result = result + "";
    printWithType(result); //223 string
</script>

कोई विशेष कारण आप इसे स्क्रिप्ट टैग में रखते हैं?
जूलिक्स 4

@Julix 2009 में नौसिखियों के लिए, एक मूल अवधारणा सीखने के लिए एक html फ़ाइल में प्लॉपिंग। अगर मैं आज इस ताजा जवाब दे रहा था तो मैं इसे अलग तरह से कर सकता हूं, लेकिन शायद नहीं।
आर्टलंग

53

चरण (1) "१", "२", "३" को "१२३" में समेटें

 "1" + "2" + "3"

या

 ["1", "2", "3"].join("")

में शामिल होने के विधि संयोजित एक स्ट्रिंग में एक सरणी के आइटम, आइटम के बीच निर्दिष्ट सीमांकक डाल। इस मामले में, "सीमांकक" एक खाली स्ट्रिंग ( "") है।


चरण (2) "123" को 123 में बदलें

 parseInt("123")

ECMAScript 5 से पहले , बेस 10 के लिए मूलांक को पास करना आवश्यक था:parseInt("123", 10)


चरण (3) 123 + 100 = 223 जोड़ें

 123 + 100


चरण (4) गुप्त 223 "223" में

 (223).toString() 


यह सब टोगथर रखो

 (parseInt("1" + "2" + "3") + 100).toString()

या

 (parseInt(["1", "2", "3"].join("")) + 100).toString()

4
अच्छा, स्पष्ट उदाहरण। इसके अलावा, अच्छे रूप के लिए यश - आपको फ़ंक्शन के लिएparseInt हमेशा मूलांक निर्दिष्ट करना चाहिए ।
hotshot309

मूलांक सहित मुझे भ्रमित किया और मैंने एक और उत्तर पर स्क्रॉल किया जहां यह समझाया गया था। भ्रम के बिंदु पर सही होने के लिए एक त्वरित स्पष्टीकरण में संपादित किया गया।
आर्टऑफवर्फ

@ArtOfWarfare धन्यवाद, अच्छा संपादन। इस उत्तर के समय मूलांक आवश्यक था। इन दिनों, इसे छोड़ने के लिए एक तर्क दिया जा सकता है। ES5 के रूप में, जो सभी "आधुनिक" ब्राउज़रों और Node.js समर्थन, parseInt (केवल 0-9> के साथ <a स्ट्रिंग) हमेशा बेस 10. का उपयोग करता है
पैट्रिक

मजेदार तथ्य .. नेटस्केप के मूल जावास्क्रिप्ट में (लगभग 1995) parseInt के लिए डिफ़ॉल्ट मूलांक 8 था (जब तक कि स्ट्रिंग समाहित न हो और 8 या 9)
जस्टिन ओह्स

27
r = ("1"+"2"+"3")           // step1 | build string ==> "123"
r = +r                      // step2 | to number    ==> 123
r = r+100                   // step3 | +100         ==> 223
r = ""+r                    // step4 | to string    ==> "223"

//in one line
r = ""+(+("1"+"2"+"3")+100);

तेज स्ट्रिंग के लिए धन्यवाद -> संख्या रूपांतरण
mcont

यदि आप जांचते हैं कि यह एक नंबर है या नहीं तो parseInt () का उपयोग करें। उदाहरण के लिए, parseInt ("") NaN है, लेकिन + "" 0 है!
ग्रीन

15

जावास्क्रिप्ट के टाइपिंग सिस्टम के कारण ये प्रश्न हर समय सामने आते हैं। लोगों को लगता है कि वे एक नंबर प्राप्त कर रहे हैं जब वे एक नंबर की स्ट्रिंग प्राप्त कर रहे हैं।

यहां कुछ चीजें दी गई हैं जिन्हें आप देख सकते हैं कि जावास्क्रिप्ट किस तरह से स्ट्रिंग और नंबरों से संबंधित है। व्यक्तिगत रूप से, मैं चाहता हूं कि जावास्क्रिप्ट ने स्ट्रिंग समवर्ती के लिए + के अलावा कुछ प्रतीक का उपयोग किया था ।

चरण (1) "१", "२", "३" को "१२३" में समेटें

result = "1" + "2" + "3";

चरण (2) "123" को 123 में बदलें

result = +"123";

चरण (3) 123 + 100 = 223 जोड़ें

result = 123 + 100;

चरण (4) 223 को "223" में बदलें

result = "" + 223;

यदि आप जानते हैं कि ये काम क्यों कर रहे हैं, तो आपको जावास्क्रिप्ट अभिव्यक्तियों में परेशानी होने की संभावना कम है।


3
मैं वास्तव में लगता है कि यह बहुत बुरा अभ्यास है क्योंकि यह काफी अपारदर्शी है जैसा कि वाह्ट का चल रहा है। यह जानते हुए कि कुछ संचालन एक प्रभावित कलाकारों को प्रभावित करते हैं एक चाल है, और जानने के लिए एक अच्छा है, लेकिन यह बिल्कुल पठनीय नहीं है। संचार ही सब कुछ है।
अन्नकूट

1
मुझे लगता है कि इन चीजों को जानना महत्वपूर्ण है ताकि आप जान सकें कि जब आप कोड पढ़ते हैं तो क्या हो रहा है। बहुत सारे जावास्क्रिप्ट का उपयोग होता है क्योंकि यह स्रोत के रूप में प्रसारित होता है, और छोटे कोड का मतलब सर्वर लागत में कमी हो सकता है।
नोसरेडना

6
आपको इसे संपीड़न उपकरणों के माध्यम से प्राप्त करना चाहिए, हालांकि इस रूप में यह रखरखाव की बहुत वास्तविक लागत पर अनुकूलन है।
अन्नकूट

6
फिर भी, इन चीजों को जानने से पहली जगह में सवाल को रोकने में मदद मिलेगी, जो इस बात की कमी थी कि जावास्क्रिप्ट स्ट्रिंग्स और संख्याओं के साथ कैसे व्यवहार करता है। यह बौद्धिक जिज्ञासा की बात है। क्या होता है जब मैं एक स्ट्रिंग में एक संख्या जोड़ देता हूं? अनरी प्लस कैसे काम करता है? यदि आप उत्तर नहीं जानते हैं, तो आप वास्तव में जावास्क्रिप्ट को नहीं जानते हैं, और इस तरह के प्रश्न सामने आएंगे।
नोसरेडना

11

आप इसे इस तरह से कर सकते हैं:

// step 1 
var one = "1" + "2" + "3"; // string value "123"

// step 2
var two = parseInt(one); // integer value 123

// step 3
var three = 123 + 100; // integer value 223

// step 4
var four = three.toString(); // string value "223"

16
सबसे अच्छा अभ्यास parixInt () फ़ंक्शन में मूलांक पैरामीटर को जोड़ना होगा। तो, parseInt (एक, 10) आश्वासन देता है कि जो भी आप इसे फेंकते हैं वह गलत नहीं होगा।
आर्टलंग

3
माना। अन्यथा, शुरू होने वाले मूल्यों 0को अष्टक (आधार -8) संख्याओं के रूप में देखा जाएगा ।
hotshot309

1
इससे भी अधिक अप्रत्याशित, मूल्यों के साथ शुरू 0और फिर युक्त 8या 9विफल हो जाएगा, जिससे 0. एग parseInt('034') = 28, और , की वापसी होगी parseInt('09') = 0
राबर्ट मार्टिन

9

किसी स्ट्रिंग को संख्या में बदलने के लिए, घटाना 0. एक संख्या को एक स्ट्रिंग में बदलने के लिए, "" (खाली स्ट्रिंग) जोड़ें।

5 + 1 आपको 6 देगा

(5 + "") + 1 आपको "51" देगा

("5" - 0) + 1 आपको 6 देगा


1
इस तरह से भाषा के सवाल पर आधारित चालों पर भरोसा करने से वास्तविक अस्पष्टता हो सकती है। उदाहरण के लिए "5" -0 वास्तव में संख्या 5 में परिणाम करता है, लेकिन स्ट्रिंग "50" में "5" +0 परिणाम देता है। (हां मुझे पता है कि यह कई साल बाद है और यह शायद थोड़ा दुखद है कि मैं इसे पढ़ भी रहा था।)
निक राइस

6

parseInt को स्कैनफ की तरह मिसफिट किया जाता है:

parseInt ("12 बंदर", 10) '12' मान वाला एक नंबर है
+ "12 बंदर" एक संख्या है जिसका मूल्य 'NaN' है
संख्या ("12 बंदर") मान 'NaN' के साथ एक संख्या है


1

नीचे एक बहुत ही परेशान करने वाला उदाहरण है कि कैसे जावास्क्रिप्ट आपको परेशानी में डाल सकता है:

यदि आप केवल parseInt()संख्या में बदलने के लिए उपयोग करने का प्रयास करते हैं और फिर परिणाम में एक और संख्या जोड़ते हैं तो यह दो तारों को समाप्‍त कर देगा।

हालाँकि, आप नीचे दिए गए उदाहरण में दिखाए गए अनुसार कोष्ठक में योग की अभिव्यक्ति रखकर समस्या को हल कर सकते हैं।

परिणाम: उनकी आयु योग है: 98; उनकी आयु योग नहीं है: 5048

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

var myFather = new Person("John", "Doe", "50", "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

document.getElementById("demo").innerHTML = "Their age sum is: "+
 (parseInt(myFather.age)+myMother.age)+"; Their age sum is NOT: " +
 parseInt(myFather.age)+myMother.age; 
</script>

</body>
</html>


0

सरलतम है जब आप पूर्णांक को एक स्ट्रिंग करना चाहते हैं

var a,b, c;
a = 1;
b = a.toString(); // This will give you string

अब, वेरिएबल b से जो टाइप स्ट्रिंग का है, हम पूर्णांक प्राप्त कर सकते हैं

c = b *1; //This will give you integer value of number :-)

यदि आप ऊपर जांचना चाहते हैं तो एक संख्या है। यदि आप सुनिश्चित नहीं हैं कि बी में पूर्णांक है तो आप उपयोग कर सकते हैं

if(isNaN(c*1)) {
  //NOt a number
}
else //number

0

हम इसे पहले संख्याओं में बदलने और बस जोड़ने के लिए यूनीरी प्लस ऑपरेटर का उपयोग करके कर सकते हैं। निचे देखो:-

var a = "4";
var b = "7";
var sum = +a + +b; 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.