जावास्क्रिप्ट में दो संख्याओं को कैसे संयोजित करें?


107

मैं इसके बदले कुछ 5 + 6वापस करना चाहता हूं ।"56"11


3
खैर, आपको निश्चित रूप से बहुत सारे उत्तर मिले। मैं सभी सही वोट कर रहा हूं।
डेविड

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

जवाबों:


152

"" + 5 + 6इसे स्ट्रिंग्स के लिए मजबूर करने के लिए उपयोग करें । यह संख्यात्मक चर के साथ भी काम करता है:

var a = 5;
var b = 6;
console.log("" + a + b);


ठीक है, मानों को 5 और 6 को दो चर में बांटा गया है: var1 = 5; var2 = 6; क्या यह अभी भी काम करेगा
हेइडी

3
इस उत्तर को संपादित किया जाना चाहिए, निश्चित रूप से यह एक बेहतर दृष्टिकोण है। const numbersAsString = `${5}${6}`;
पावोल त्रावनिक


26

अब आप ES6 टेम्पलेट शाब्दिक का उपयोग कर सकते हैं ।

const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56

या, यदि आपके पास चर हैं:

const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;

console.log(numbersAsString); // Outputs 56

व्यक्तिगत रूप से मुझे नया वाक्य-विन्यास बहुत स्पष्ट लगता है, यद्यपि थोड़ा और क्रिया।






11

मुझे पता है कि यह एक पुरानी पोस्ट है और कई बार इसका जवाब दिया गया है। मैं भी सोच रहा था कि क्या जावास्क्रिप्ट में कोई फंक्शन होगा जो ऐसा करेगा। मैं कुछ गणित प्रोग्रामिंग कर रहा था और दो संख्याओं को समाप्‍त करने की जरूरत थी।

तो क्या होगा अगर मुझे दो नंबर 17 और 29 को मिलाने की जरूरत है। यकीन है कि मैं उन्हें तार में बदल सकता हूं और उन्हें बदल सकता हूं, फिर नए स्ट्रिंग को एक नंबर में बदल दें। यह बहुत अच्छी तरह से काम करने लगता है और मैं अपने कोड के साथ आगे बढ़ सकता हूं, लेकिन यहां एक नज़र डालते हैं और यह पता लगाने की कोशिश करते हैं कि वास्तव में यहाँ क्या हो रहा है।

हम इन दो नंबरों के लिए क्या कर रहे हैं, हम 17 और 29 कैसे लेते हैं और इसे एक हजार सात सौ उनतीस में बदल देते हैं? खैर हम 17 को 100 से गुणा कर सकते हैं और फिर 29 जोड़ सकते हैं। और कैसे 172 और 293 के बारे में एक सौ बहत्तर हजार दो सौ निन्यानवे? 172 को 1000 से गुणा करें और 293 जोड़ें। लेकिन केवल 2 और 9 के बारे में क्या? 2 को 10 से गुणा करें और 29 प्राप्त करने के लिए 9 जोड़ें।

तो उम्मीद है कि अब तक एक पैटर्न आपके लिए स्पष्ट होना चाहिए। हम केवल स्ट्रिंग्स का उपयोग करने के बजाय इस गणना को करने के लिए एक गणित सूत्र तैयार कर सकते हैं। किसी भी दो संख्याओं, ए और बी को समेटने के लिए, हमें a और 10 की लंबाई b की शक्ति के साथ b को जोड़ने की जरूरत है।

तो हम संख्या बी की लंबाई कैसे प्राप्त करते हैं? खैर, हम बी को एक स्ट्रिंग में बदल सकते हैं और इसकी लंबाई संपत्ति प्राप्त कर सकते हैं।

    a * Math.pow(10, new String(b).length) + b;

लेकिन स्ट्रिंग्स के बिना ऐसा करने का एक बेहतर तरीका होना चाहिए, है ना? हाँ वहाँ है।

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

किसी भी दो संख्याओं के लिए, ए और बी, किसी भी आधार बी के साथ। हम लंबाई बी की शक्ति के आधार बी से गुणा करने जा रहे हैं (बी के लॉग आधार का उपयोग करके इसे निकटतम पूरी संख्या प्राप्त करने के लिए फर्श करें और फिर इसमें 1 जोड़ दें) फिर बी जोड़ना।

तो अब हमारा कोड इस तरह दिखता है:

    a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;

लेकिन रुको, क्या होगा अगर मैं बेस 2 या बेस 8 में ऐसा करना चाहता था? मैं उसे कैसे कर सकता हूँ? हम अपने सूत्र का उपयोग नहीं कर सकते हैं जो हमने अभी किसी अन्य आधार के साथ बनाया है, लेकिन आधार 10. जावास्क्रिप्ट गणित ऑब्जेक्ट में पहले से ही आधार 10 और 2 (सिर्फ गणित.लॉग) के लिए फ़ंक्शन हैं, लेकिन हम किसी के लिए लॉग फ़ंक्शन कैसे प्राप्त करते हैं अन्य आधार? हम आधार के लॉग द्वारा बी के लॉग को विभाजित करते हैं।Math.log(b) / Math.log(base).

तो अब हमारे पास दो संख्याओं को समाप्‍त करने के लिए हमारी पूरी तरह से कार्य करने वाली गणित आधारित संहिता है:

    function concatenate(a, b, base) {
        return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    }
    var a = 17, var b = 29;
    var concatenatedNumber = concatenate(a, b, 10);
    // concatenatedNumber = 1729

अगर आपको पता था कि आप केवल बेस 10 गणित करने जा रहे हैं, तो आप आधार के लिए एक चेक जोड़ सकते हैं अपरिभाषित है तो आधार = 10 सेट करें:

    function concatenate(a, b, base) {
        if(typeof base == 'undefined') {
            base = 10;
        }
        return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    }

    var a = 17, b = 29;
    var newNumber = concatenate(a, b); // notice I did not use the base argument
    // newNumber = 1729

मेरे लिए इसे आसान बनाने के लिए, मैंने फ़ंक्शन को संख्या ऑब्जेक्ट में जोड़ने के लिए प्रोटोटाइप का उपयोग किया:

    Number.prototype.concatenate = function(b, base) {
        if(typeof base == 'undefined') {
                base = 10;
        }
        return this * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    };
    var a = 17;
    var newNumber = a.concatenate(29);
    // newNumber = 1729



2
enter code here
var a = 9821099923;
var b = 91;
alert ("" + b + a); 
// after concating , result is 919821099923 but its is now converted 
into string  

console.log(Number.isInteger("" + b + a))  // false

 you have to do something like below:- 

var c= parseInt("" + b + a)
console.log(c); // 919821099923
console.log(Number.isInteger(c)) // true


1

मैं इस तरह वापस संख्या में परिवर्तित ..

const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);

उत्पादन 1245

- संपादित करें -

माफ़ करना,

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

h = new Date().getHours();
m = new Date().getMinutes();
isOpen: boolean;

timeNow = (this.m < 10) ? '' + this.h + 0 + this.m : '' + this.h + this.m;

openTime = parseInt(this.timeNow);


closed() {

(this.openTime >= 1450 && this.openTime <= 1830) ? this.isOpen = true : 
this.isOpen = false;
(this.openTime >= 715 && this.openTime <= 915) ? this.isOpen = true : 
this.isOpen = false;

}

नीचे वोट अच्छा था शुक्रिया :)

मैं इसके लिए नया हूं और आप लोगों से यह जानने के लिए यहां आया हूं कि अच्छा क्यों होगा।

वैसे भी मेरे कोड को अद्यतन करने के लिए कि मैंने अपनी समस्या कैसे तय की क्योंकि इस पोस्ट ने मुझे यह पता लगाने में मदद की।


0

मुझे concatरास्ता पसंद है :

const numVar1 = 5;
const numVar2 = 6;
const value = "".concat(numVar1, numVar2);
// or directly with values
const value2 = "".concat(5, 6);

आप एक सरणी का उपयोग भी कर सकते हैं जो कुछ उपयोग मामलों में मदद कर सकती है:

const value3 = [5, 6, numVar1].join('');

0

आप इस चाल का उपयोग करके एक संख्या वापस कर सकते हैं :
अनुशंसित नहीं

[a] + b - 0

उदाहरण :

let output = [5] + 6 - 0;
console.log(output); // 56
console.log(typeof output); // number

0

उपरोक्त सभी उत्तरों को जोड़ने के लिए मैं पृष्ठभूमि तर्क साझा करना चाहता हूं:

प्लस एक अतिरिक्त ऑपरेटर है जिसका उपयोग स्ट्रिंग्स के संयोजन के लिए भी किया जाता है। जब हम संख्या बढ़ाना चाहते हैं। यह समझ होनी चाहिए कि हम तारों को समाप्‍त करना चाहते हैं, क्‍योंकि संख्‍याओं का सम्‍मिलन मेरे लिए वैध उपयोग के मामले नहीं बनाता है।

हम इसे कई तरीकों से प्राप्त कर सकते हैं,

प्रकार रूपांतरण के माध्यम से

let a = 5;
a.toString()+5 // Output 55 type "string"

यह भी काम करेगा और पृष्ठभूमि में टाइप रूपांतरण कर रहा है,

5 +""+ 5 // Output 55 type "string"

यदि आप दो स्ट्रिंग को बदलने के लिए दृढ़ हैं और आउटपुट का प्रकार int होना चाहिए, तो parseInt () यहां काम करता है

parseInt(5 +""+ 5)  //Output 55 Type "number"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.