জাভাস্ক্রিপ্টে কোনও নম্বর বিজোড় কিনা তা কীভাবে নির্ধারণ করবেন


245

জাভাস্ক্রিপ্টের কোনও সংখ্যা সমান বা বিজোড় কিনা তা নির্ধারণ করতে কেউ আমাকে কিছু কোডের দিকে নির্দেশ করতে পারে?



1
@ ডেভিড থোমাস আমি আংশিকভাবে একমত, তবে আমার দুটি ক্যাভ্যাট রয়েছে: ১. যদি আমাকে বেছে নিতে হয় তবে আমি বরং একজন নতুন প্রোগ্রামার %অপারেটর সম্পর্কে জানতাম &এবং ২। যদিও &তাত্ত্বিকভাবে দ্রুততর, এটি আসলে কোনও ব্যাপার নয়
কোজিরো

3
@ কোজিরো: আমি আরও বেশি (বৈধ) বিকল্পগুলি একজন শিক্ষার্থীর কাছে উপস্থাপন করতে চাই; প্লাস আমি আগে কখনও বিটওয়াইজ- এবং এই পদ্ধতিতে ব্যবহার করার কথা ভাবিনি, তাই এটি একটি আকর্ষণীয় গ্রহণ। যাই হোক, যেহেতু এটি হল একটি প্রতারিত, আমি পূর্ব বিদ্যমান প্রশ্নের সঙ্গে সমবায় জন্য পতাকাঙ্কিত গেছেন। আশা করি, তাহলে এখানে উত্তরগুলি (অন্তত সেই নির্দিষ্ট উত্তরটি) নষ্ট হবে না।
ডেভিড বলেছেন মনিকা

1
@ কোজিরো আমি এই কথা বলতে ভয় পাচ্ছি যে আপনার ফিডালটি যথেষ্ট অকেজো, যেহেতু বেশিরভাগ গণনার সময় ফাংশন কলগুলি গ্রহণ করে। তবে কোনও সংখ্যা বিজোড় বা এমনকি এটি নির্ধারণের জন্য কেউ ফাংশন কল ব্যবহার করবে না ... আমি আপনার পরীক্ষার তৃতীয় সংশোধন করেছি, তবে আমি এখনই আমার ফোনে আছি ...
ম্যাক্সআর্ট

উত্তর:


347

নীচের কোডটি ব্যবহার করুন:

function isOdd(num) { return num % 2;}
console.log("1 is " + isOdd(1));
console.log("2 is " + isOdd(2));
console.log("3 is " + isOdd(3));
console.log("4 is " + isOdd(4));

1 একটি বিজোড় সংখ্যা উপস্থাপন করে, যখন 0 একটি সমান সংখ্যা উপস্থাপন করে।


97
নোট করুন যে এটি ফিরে আসবে 0বা 1(বা NaNআপনি এটি এমন কোনও কিছু খাওয়ান যা একটি সংখ্যা নয় এবং একটিতে জোর করা যায় না), যা বেশিরভাগ পরিস্থিতিতে ভাল কাজ করবে। তবে আপনি যদি সত্যিকারের চান trueবা false:return (num % 2) == 1;
টিজে ক্রোডার

3
হ্যাঁ NAN সম্পর্কে ভাল নোট। তবে সাধারণত, আপনি জাভাস্ক্রিপ্টটি সত্য বা মিথ্যা হতে চান, এ কারণেই আমি এটি আমার মতো করে লিখেছি।
চিই

9
কেবল পরিষ্কার করতে, মডুলো অপারেটর (%) একটি বিভাগের বাকী অংশ দেয়। সুতরাং 3% 2 3/2 হবে, 1
জনকে

6
টিজে যা বলেছে তা ছাড়াও, numপূর্ণসংখ্যা না হলে এটি ভগ্নাংশটি ফিরিয়ে দেবে । আপনি যদি তুলনা করেন তবে এটি এখনও কাজ করবে isOdd(1.5)==true(কারণ একটি ভগ্নাংশের মানটি সমান নয় true), তবে ফাংশনটি ফিরে আসলে trueবা false"ইসডড" নাম দ্বারা ইম্প্রেড করা ভাল হবে।
nnnnnn

6
আপনি return !!(num % 2)বুলিয়ান
ডানকান

115

বিটওয়াইড ANDঅপারেটর ব্যবহার করুন ।

function oddOrEven(x) {
  return ( x & 1 ) ? "odd" : "even";
}

function checkNumber(argNumber) {
  document.getElementById("result").innerHTML = "Number " + argNumber + " is " + oddOrEven(argNumber);
}
 
checkNumber(17);
<div id="result" style="font-size:150%;text-shadow: 1px 1px 2px #CE5937;" ></div>

আপনি যদি স্ট্রিং রিটার্ন মান না, বরং একটি বুলিয়ান চান, তবে এটি ব্যবহার করুন:

var isOdd = function(x) { return x & 1; };
var isEven  = function(x) { return !( x & 1 ); };

5
+1, আপনি উত্তর অবশ্যই স্পষ্টভাবে আমার প্রহার করেন, আপনার একমাত্র উত্তরটি ব্যবহার হয় না তা উল্লেখ না করে X % Y!
s0d4pop

4
আমি নিশ্চিত যদি আমার পরীক্ষা নির্ভুল নয় তবে, bitwise এবং একটি নির্দিষ্ট সংখ্যক এবং 2 একটি র্যান্ডম সংখ্যার জন্য বার ধীর জন্য 40 বার ফরম অপারেটরের তুলনায় ধীর হবে বলে মনে হয় আছি: jsperf.com/odd-or-even
ব্লেন্ডার

8
মনে রাখবেন যে এটি এমন কোনও সংখ্যার জন্য "বিজোড়" বা "এমনকি" প্রত্যাবর্তন করবে (যেমন, 3.14)।
nnnnnn

2
বা: function isEven(n){return !(n & 1);}
রবজি

7
@ জেনু প্রতিটি সংখ্যা বিটগুলির একটি সিরিজ সমন্বিত। সমস্ত বিজোড় সংখ্যার সর্বনিম্ন-তাত্পর্যপূর্ণ (ডানদিকে) বিটটি সেট করা হয়, সমস্ত সমান সংখ্যক 0। চূড়ান্ত x & 1বিটটি সংখ্যায় সেট করা হয় কিনা তা পরীক্ষা করে (কারণ 1 সর্বনিম্ন উল্লেখযোগ্য বিট ব্যতীত সমস্ত বিট সমেত একটি সংখ্যা 1 হিসাবে সেট করা হয়) ): এটি যদি হয় তবে সংখ্যাটি বিজোড়, অন্যথায় এমনকি।
0x499602D2

31

আপনি এরকম কিছু করতে পারেন:

function isEven(value){
    if (value%2 == 0)
        return true;
    else
        return false;
}

9
দেখে মনে হচ্ছে না যে আপনি জানেন যে একটি বুলিয়ান কি। if (condition) { answer=true; } else { answer=false; }এটি কেবল অকারণে শব্দযুক্ত সংস্করণ answer = (bool) condition;। আপনার ফাংশনটি হ্রাস করুন function isEven(value) { return (bool) (value%2 == 0); }এবং আমরা সকলেই খুশি হব।
AM

9
ছদ্মবেশ পাওয়ার দরকার নেই, কারণ আমি কিছু আলাদাভাবে প্রোগ্রাম করি।
টিএনসি

5
@ আওম - দেখে মনে হচ্ছে আপনি জাভাস্ক্রিপ্ট জানেন না। আপনি বুলিয়ান দিয়ে কাস্ট করতে পারবেন না (bool)(এটি একটি ত্রুটি দেবে) এবং যে কোনও ক্ষেত্রে আপনার প্রয়োজন নেই: অপারেটর একটি বুলিয়ান ফেরত return value%2 == 0;দেওয়ার পরে কাজটি করবেন ==
nnnnnn

2
বাহ, আমি কি সত্যিই এটি লিখেছিলাম? হ্যাঁ, এটা স্পষ্টতই ভুল; মত কিছু হতে হবে answer = !!(condition)। আমি যে পয়েন্টটি তৈরি করার চেষ্টা করছিলাম, তা হ'ল আপনি return value%2==0শর্তসাপেক্ষে বিরক্ত হওয়ার দরকার নেই এবং করতে পারেন না।
awm

আমি এটি মার্জিত বলে মনে করি: value%2===0
কার্লোডোরসো


13

আমাকে কি এমন একটি অ্যারে তৈরি করতে হবে যা প্রচুর সংখ্যক রয়েছে

না। মডুলাস (%) ব্যবহার করুন। এটি আপনাকে যে দুটি সংখ্যা ভাগ করে দিচ্ছে তার বাকি অংশ দেয়।

Ex. 2 % 2 = 0 because 2/2 = 1 with 0 remainder.

Ex2. 3 % 2 = 1 because 3/2 = 1 with 1 remainder.

Ex3. -7 % 2 = -1 because -7/2 = -3 with -1 remainder.

এর অর্থ আপনি যদি কোনও সংখ্যা x 2 দ্বারা মোড করেন তবে আপনি 0 বা 1 বা -1 পাবেন। 0 এর অর্থ এটি সমান। অন্য যে কোনও কিছুর অর্থ এটি বিজোড়।


8

কোডের একটি ছোট স্নিপেট দিয়ে এটি সমাধান করা যেতে পারে:

function isEven(value) {
    if (value%2 == 0)
    return true;
else
    return false;
}

আশাকরি এটা সাহায্য করবে :)


6

অনেক ভাষার মতো, জাভাস্ক্রিপ্টের একটি মডুলাস অপারেটর রয়েছে% , যা বিভাগের বাকী অংশ খুঁজে পায়। 2 দ্বারা বিভাজনের পরে যদি কোনও অবশিষ্ট না থাকে তবে একটি সংখ্যা এমনকি হয়:

// this expression is true if "number" is even, false otherwise
(number % 2 == 0)

এমনকি পূর্ণসংখ্যার জন্য পরীক্ষার জন্য এটি একটি খুব সাধারণ বুদ্ধিমান।


3
তবে, মডুলাসটি নেতিবাচক মানগুলির জন্য জটিল / অপরিজ্ঞাত হতে পারে .. উপযুক্ত ভাষার নির্দিষ্টকরণের সাথে পরামর্শ করতে ভুলবেন না।


5

আপনি চারপাশে পাস করতে পারেন একটি সাধারণ ফাংশন। মডুলো অপারেটর ব্যবহার করে %:

var is_even = function(x) {
    return !(x % 2); 
}

is_even(3)
false
is_even(6)
true

1
যদি টেরিনারি অপারেটরটিতে আপনার ফলাফল হয় 'সত্য' বা 'মিথ্যা' হয় তবে আপনার সত্যিকার অর্থে টের্নারি অপারেটরের দরকার নেই। এখানে, আপনি কেবল করতে / করা উচিত:return !(x % 2);
ডম_ওয়াতসন

4

আমার এক্সটেনশনগুলি ব্যবহার করুন:

Number.prototype.isEven=function(){
     return this % 2===0;
};

Number.prototype.isOdd=function(){
     return !this.isEven();
}

তারপর

var a=5; 
 a.isEven();

== মিথ্যা

 a.isOdd();

== সত্য

যদি এটি নিশ্চিত না হন যে এটি একটি সংখ্যা কিনা, তবে নিম্নলিখিত শাখা দ্বারা এটি পরীক্ষা করুন:

if(a.isOdd){
    a.isOdd();
}

হালনাগাদ :

আপনি যদি ভেরিয়েবল ব্যবহার না করেন:

(5).isOdd()

কর্মক্ষমতা :

দেখা যাচ্ছে যে ওসিওপিডের তুলনায় প্রোসিডোরাল দৃষ্টান্তটি আরও ভাল। যাইহোক, আমি এই FIDDLE তে প্রোফাইলিং সম্পাদন করেছি । তবে ওওপ উপায়টি এখনও সবচেয়ে সুন্দর।

এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ বাবু, এই যুক্তির জন্য, ইন্টারভিউয়ে কেউ এই ধরণের যুক্তি জিজ্ঞাসা করেছিল, উত্তর দিতে পারল না, এখন আমি পেয়েছি, ধন্যবাদ .. তবে এই পদ্ধতিটি অনুসরণ করে পারফরম্যান্সে কোনও লাভ আছে কি? আমরা লিখতে পারতাম isEven (x); ইত্যাদি
শোয়েব মোহাম্মদ এ

@ শোয়েবমোহমদাআ: তুলনা হয়ে গেছে! jsfiddle.net/abdennour/jL2uyksa/3
আবদেনর টুমি

-1 নেটিভ প্রোটোটাইপ ফাংশন প্রসারিত করবেন না। ( Stackoverflow.com/questions/14034180/... )
tfmontague

3

আপনি এটি -1 বা 0 না পৌঁছানো পর্যন্ত এটিতে 2 টি বিয়োগ করুন (কেবলমাত্র ইতিবাচক পূর্ণসংখ্যার জন্য স্পষ্টতই কাজ করে) :) :)


নেতিবাচক সংখ্যার পরিবর্তে আপনি এর পরিবর্তে এতে 2 টি বাড়িয়েছেন
হাইড্রোপার

এবং এটি এমন সময়ের নরক লাগে যখন n = 2 ^ 52, এবং n> 2 ^ 53
rioV8

3

সংখ্যার সংখ্যা বা সিরিজটি বিজোড় কিনা তা নির্ধারণ করতে আপনি বিবৃতি এবং শর্তসাপেক্ষে একটি ব্যবহার করতে পারেন:

for (var i=1; i<=5; i++) 
if (i%2 !== 0) {
    console.log(i)
}

এটি প্রতিটি বিজোড় সংখ্যা 1 এবং 5 এর মধ্যে মুদ্রণ করবে।


3

এটি কেবলমাত্র অ্যাডোব ড্রিমউইভারে কার্যকর করা হয়েছে..এটি পুরোপুরি কার্যকর works আমি যদি ব্যবহার করি (isNaN (mynmb))

প্রদত্ত মানটি একটি সংখ্যা কিনা কিনা তা পরীক্ষা করতে এবং আমি নেতিবাচক সংখ্যাকে ধনাত্মক রূপান্তর করতে এবং গণনা করতে ম্যাথ.এবস (মাইএনএমবি% 2) ব্যবহার করেছি

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

</head>
<body bgcolor = "#FFFFCC">
    <h3 align ="center"> ODD OR EVEN </h3><table cellspacing = "2" cellpadding = "5" bgcolor="palegreen">
        <form name = formtwo>
            <td align = "center">
                <center><BR />Enter a number: 
                    <input type=text id="enter" name=enter maxlength="10" />
                    <input type=button name = b3 value = "Click Here" onClick = compute() />
                      <b>is<b> 
                <input type=text id="outtxt" name=output size="5" value="" disabled /> </b></b></center><b><b>
                <BR /><BR />
            </b></b></td></form>
        </table>

    <script type='text/javascript'>

        function compute()
        {
          var enter = document.getElementById("enter");
          var outtxt = document.getElementById("outtxt");

          var mynmb = enter.value;
          if (isNaN(mynmb)) 
          { 
            outtxt.value = "error !!!"; 
            alert( 'please enter a valid number');
            enter.focus();
            return;
          }
          else 
          { 
             if ( mynmb%2 == 0 ) { outtxt.value = "Even"; }  
             if ( Math.abs(mynmb%2) == 1 ) { outtxt.value = "Odd"; }
          }
        }

    </script>
</body>
</html>

3
   <script>
        function even_odd(){
            var num =   document.getElementById('number').value;

            if ( num % 2){
                document.getElementById('result').innerHTML = "Entered Number is Odd";
            }
            else{
                document.getElementById('result').innerHTML = "Entered Number is Even";
            }
        }
    </script>
</head>
<body>
    <center>
        <div id="error"></div>
        <center>
            <h2> Find Given Number is Even or Odd </h2>
            <p>Enter a value</p>
            <input type="text" id="number" />
            <button onclick="even_odd();">Check</button><br />
            <div id="result"><b></b></div>
        </center>
    </center>
</body>

2
if (X % 2 === 0){
} else {
}

আপনার নাম্বার দিয়ে এক্স প্রতিস্থাপন করুন (একটি চলক থেকে আসতে পারে)। সংখ্যাটি সমান হলে, যদি বিবৃতিটি চলতে থাকে, অন্যথায় যখন বিজোড় হয়।

যদি আপনি কেবল জানতে চান যে কোনও প্রদত্ত নম্বর বিজোড়:

if (X % 2 !== 0){
}

আবার এক্সকে একটি সংখ্যা বা ভেরিয়েবলের সাথে প্রতিস্থাপন করুন।


2

দুটি বিজোড় সংখ্যা যখন দুটি পাতাগুলি দ্বারা ভাগ হয় তখন 1 হিসাবে অবশিষ্ট থাকে এবং প্রতিটি সমান সংখ্যা যখন শূন্য দ্বারা বিভাজিত হয় তখন অবশিষ্ট হিসাবে শূন্য ছেড়ে যায় leaves অতএব আমরা এই কোডটি ব্যবহার করতে পারি

  function checker(number)  {
   return number%2==0?even:odd;
   }


2

এটাই আমি করেছি

//Array of numbers
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,32,23,643,67,5876,6345,34,3453];
//Array of even numbers
var evenNumbers = [];
//Array of odd numbers
var oddNumbers = [];

function classifyNumbers(arr){
  //go through the numbers one by one
  for(var i=0; i<=arr.length-1; i++){
     if (arr[i] % 2 == 0 ){
        //Push the number to the evenNumbers array
        evenNumbers.push(arr[i]);
     } else {
        //Push the number to the oddNumbers array
        oddNumbers.push(arr[i]);
     }
  }
}

classifyNumbers(numbers);

console.log('Even numbers: ' + evenNumbers);
console.log('Odd numbers: ' + oddNumbers);

কোনও কারণে আমাকে নিশ্চিত করতে হয়েছিল যে অ্যারের দৈর্ঘ্য এক এক করে কম হচ্ছে। যখন আমি এটি না করি, আমি বিজোড় সংখ্যা অ্যারের শেষ উপাদানটিতে "অপরিজ্ঞাত" পাই।


2
কারণ শর্তটি অ্যারের দৈর্ঘ্যে "<=" এর চেয়ে কম বা সমান সেট করা হয়েছে। আমি সমান চিহ্নটি সরিয়েছি এবং ফলাফলটি পছন্দসইভাবে হয়েছিল।
জাকের মাসরি

2

যখন আপনাকে কিছু ভেরিয়েবলটি বিজোড় হয় তা পরীক্ষা করার দরকার হয়, প্রথমে এটি পূর্ণসংখ্যা হয় কিনা তা পরীক্ষা করা উচিত । এছাড়াও, লক্ষ্য করুন যে আপনি যখন নেতিবাচক সংখ্যার উপর অবশিষ্ট গণনা করবেন, ফলাফলটি নেতিবাচক হবে ( -3 % 2 === -1)।

function isOdd(value) {
  return typeof value === "number" && // value should be a number
    isFinite(value) &&                // value should be finite
    Math.floor(value) === value &&    // value should be integer
    value % 2 !== 0;                  // value should not be even
}

যদি সংখ্যা.আইসইঞ্জারটি উপলভ্য থাকে তবে আপনি এই কোডটি এটিকে আরও সহজ করতে পারেন:

function isOdd(value) {
  return Number.isInteger(value)      // value should be integer
    value % 2 !== 0;                  // value should not be even
}

নোট: এখানে, আমরা পরীক্ষা value % 2 !== 0পরিবর্তে value % 2 === 1কারণ হল -3 % 2 === -1। আপনি যদি -1এই পরীক্ষায় পাস করতে না চান তবে আপনার এই লাইনটি পরিবর্তন করতে হতে পারে।

এখানে কয়েকটি পরীক্ষার মামলা রয়েছে:

isOdd();         // false
isOdd("string"); // false
isOdd(Infinity); // false
isOdd(NaN);      // false
isOdd(0);        // false
isOdd(1.1);      // false
isOdd("1");      // false
isOdd(1);        // true
isOdd(-1);       // true

2

ব্যবহার %আপনাকে এটি করতে সহায়তা করবে ...

এটি আপনার জন্য আপনি কয়েকটি ফাংশন তৈরি করতে পারেন ... আমি জাভা স্ক্রিপ্টের সংখ্যার সাথে সংযুক্ত নয় এমন সেপার্ট ফাংশন পছন্দ করি যা আপনি নম্বরটি পাস করছেন কিনা তাও পরীক্ষা করে:

বিজোড় ফাংশন:

var isOdd = function(num) {
  return 'number'!==typeof num ? 'NaN' : !!(num % 2);
};

এমনকি ফাংশন:

var isEven = function(num) {
  return isOdd(num)==='NaN' ? isOdd(num) : !isOdd(num);
};

এবং এটিকে কল করুন:

isOdd(5); // true
isOdd(6); // false
isOdd(12); // false
isOdd(18); // false
isEven(18); // true
isEven('18'); // 'NaN'
isEven('17'); // 'NaN'
isOdd(null); // 'NaN'
isEven('100'); // true

2

ES6 এ একটি লাইনার কেবল এটি পরিষ্কার।

const isEven = (num) => num % 2 == 0;


2

অনেকেই বিজোড়ের অর্থ ভুল বুঝে

  • isOdd("str")মিথ্যা হতে হবে।
    শুধুমাত্র একটি পূর্ণসংখ্যা বিজোড় হতে পারে।
  • isOdd(1.223)এবং isOdd(-1.223)ভুল হতে হবে।
    ভাসা কোনও পূর্ণসংখ্যা নয়।
  • isOdd(0)মিথ্যা হতে হবে।
    জিরো একটি সমান পূর্ণসংখ্যা ( https://en.wikedia.org/wiki/Parity_of_zero )।
  • isOdd(-1)সত্য হওয়া উচিত।
    এটি একটি বিজোড় পূর্ণসংখ্যা।

সমাধান

function isOdd(n) {

  // Must be a number
  if (isNaN(n)) {
    return false;
  }

  // Number must not be a float
  if ((n % 1) !== 0) {
    return false;
  }

  // Integer must not be equal to zero
  if (n === 0) {
    return false;
  }

  // Integer must be odd
  if ((n % 2) !== 0) {
    return true;
  }

  return false;
}

জেএস ফিডল (প্রয়োজনে): https://jsfiddle.net/9dzdv593/8/

1-মাছ ধরার নৌকা

জাভাস্ক্রিপ্ট 1-লাইন সমাধান। যাঁরা পঠনযোগ্যতার বিষয়ে চিন্তা করেন না তাদের জন্য।

const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;

আপনি এখনও সমাধানটি ত্বরান্বিত করতে পারেন। উদাহরণস্বরূপ, চূড়ান্ত বিবৃতিগুলিতে আপনি কেবল ফিরে আসতে পারবেন !! (n% 2), এটি বৈকল্পিকভাবে স্বাক্ষরযুক্ত সংখ্যাগুলি দিয়ে কাজ করবে (যেমন, যখন এন% 2 0 দেয়, এটি মিথ্যা, তবে যখন -1 বা 1 ফিরে আসে, এটি হবে সত্য প্রত্যাবর্তন)। আপনার সমাধানটি আসলে বিজোড় সংখ্যার জন্য মিথ্যা প্রত্যাবর্তন করছে যেহেতু এটি মডিউলাস রিটার্ন 0 হয় কিনা তা যাচাই করে তবে 1 টি পরীক্ষা করা উচিত এবং 1 টি নেতিবাচক সংখ্যার জন্য ব্যর্থ হবে, সুতরাং ফিরে আসুন !! (এন% 2) নিরাপদ। এবং যাইহোক, {} (ব্লক স্টেটমেন্ট) সংশোধন সংক্রান্ত সমস্যা সৃষ্টি করে না এবং আলোচনায় উপস্থিত নেই।
হাইড্রোপার

@ দ্য প্রপহ্যান্ডস - নোটগুলির জন্য ধন্যবাদ (1) বিষয়টি ছিল মডুলাস ভার্সনে টাইপ ছিল; এটি (n % 2) !== 0পরিবর্তে করা উচিত ছিল (n % 2) === 0। (২) আমার পরামর্শ এড়াতে হবে !!(n % 2), কারণ (ক) এর (n % 2) !== 0( jsperf.com/notnot-vs-stict-not ) তুলনায় ধীর পারফরম্যান্স রয়েছে , (খ) এটি একটি হ্যাক - এটি একটি মিথ্যা মানকে 0জোর করে false, এবং (সি) এটি অস্পষ্ট (উচ্চ স্তরের প্রোগ্রামিং ভাষাগুলি পারফরম্যান্সের জন্য পাসকালের মতো পড়া উচিত নয় - এটি সংকলকের কাজ)। (৩) হ্যাঁ, অনুপস্থিত {}ব্লক স্টেটমেন্টগুলির ফলে বেশ কয়েকটি ইস্যু হয় (আমার উত্তরে আপডেট হয়েছে)।
টিফমন্টিগ

আমি কখনই ব্লক স্টেটমেন্ট এড়িয়ে যাব না কারণ আমি পঠনযোগ্যতার বিষয়ে আগ্রহী, তবে আমি বলার চেষ্টা করছি যে ব্লক বিবৃতি সন্ধানের ফলে সমস্যার সমাধান হয় না, কেবল কোড রক্ষণাবেক্ষণেই। উদাহরণস্বরূপ, ব্লক স্টেটমেন্টের পরিবর্তে এক্সপ্রেশন স্টেটমেন্টের সাথে একত্রিত ক্রম এক্সপ্রেশন ব্যবহার করে কোডটি অপঠনযোগ্য এবং if (0) call1(), assign = 0, call2()কুরুচিপূর্ণ হতে পারে, যেমন: তবে একটি বিবৃতিটি খারাপ নয়: if (0) return; if (0) ;; if (0); break; if (0) continue;এবং যাইহোক আমি যখন ব্রেক-লাইন ব্লক স্টেটমেন্ট ব্যবহার করা চালিয়ে যেতে পছন্দ করি তখন যখন দীর্ঘ-ইনলাইন শর্ত
হাইড্রোপার

আপনার মত প্রকার / নাল চেক isNaN(n)নিরীহ রয়েছে - নিশ্চিত করুন যে আপনি আবৃত NaNমামলা, কিন্তু isOdd(null), isOdd(undefined), isOdd({x:1})সব আগমন falseযা আমি একটি ত্রুটি হতে বিবেচনা; অবশ্যই আপনি কেবল উল্লেখ করছেন যে কোনও নির্দিষ্ট ডোমেনের উপরে আপনার ফাংশনের সঠিক আচরণ রয়েছে: কেবল সংখ্যা-টাইপ ইনপুট। কোন ক্ষেত্রে, কেবলমাত্র isNaNচেকটি ফেলে দিন এবং ব্যবহারকারীকে এটি সঠিক ধরণের সাথে কল করতে বাধ্য করুন। রক্ষণাত্মক প্রোগ্রামিং ভয়ঙ্কর is তারপরে আপনার ফাংশনটি সরল করা হয়েছে isOdd = x => Math.floor(x) === x && x & 1 === 1- সুস্পষ্ট trueবা falseমানগুলি
আপনাকে ধন্যবাদ

null, undefinedএবং অবজেক্টগুলি {}বিজোড় পূর্ণসংখ্যার হয় না এবং ফলস্বরূপ ফাংশনটি ফিরে আসে false- আপনি কেন এটি ত্রুটি হিসাবে বিবেচনা করছেন তা নিশ্চিত নয়। isNaNচেক (প্রতিরক্ষা জন্য নয়) পারফরম্যান্সের জন্য করে তবে এটি অন্যান্য চেক করণ ছাড়া অকালে ফাংশন প্রস্থান করতে দেয়।
টিএমএমটিগে

1

আমি এটি বাস্তবায়ন করতাম একটি বুলিয়ান ফেরত দেওয়ার জন্য:

function isOdd (n) {
    return !!(n % 2);
    // or ((n % 2) !== 0).
}

এটি স্বাক্ষরবিহীন এবং স্বাক্ষরযুক্ত উভয় সংখ্যায় কাজ করবে। যখন মডিউলাস ফিরে আসবে -1বা 1এটিতে অনুবাদ হবে true

অ-মডুলাস সমাধান:

var is_finite = isFinite;
var is_nan = isNaN;

function isOdd (discriminant) {
    if (is_nan(discriminant) && !is_finite(discriminant)) {
        return false;
    }

    // Unsigned numbers
    if (discriminant >= 0) {
        while (discriminant >= 1) discriminant -= 2;

    // Signed numbers
    } else {
        if (discriminant === -1) return true;
        while (discriminant <= -1) discriminant += 2;
    }

    return !!discriminant;
}

1

আধুনিক জাভাস্ক্রিপ্টে আরও কার্যকর পদ্ধতি:

const NUMBERS = "nul one two three four five six seven ocho nueve".split(" ")

const negate = f=> (...args)=> !f(...args)
const isOdd  = n=> NUMBERS[n % 10].indexOf("e")!=-1
const isEven = negate(isOdd)

1

ES6 এ:

const isOdd = num => num % 2 == 1;


3
২ existing টি বিদ্যমান উত্তরের সাথে আট বছরের পুরানো প্রশ্নের উত্তর যুক্ত করার সময় আপনার উত্তরটির প্রশ্নের নতুন দিকটি কীভাবে যুক্ত হয় তা ব্যাখ্যা করা সত্যিই কার্যকর এবং যদি সময় এবং নতুন সংস্করণ অতিক্রান্ত হয় তবে উত্তরটি প্রভাবিত করে। একটি কোড কেবলমাত্র উত্তর প্রায়শই কিছু ব্যাখ্যা সংযোজন দ্বারা উন্নত করা যেতে পারে এবং এই ক্ষেত্রে কিছু উদাহরণ কল ব্যবহার করে দেখায়।
জেসন অ্যালার

1
শিরোনামটি হল 'জাভাস্ক্রিপ্টে কোনও সংখ্যা বিজোড় কিনা তা নির্ধারণ কীভাবে' এবং জিজ্ঞাসিত প্রশ্নের জন্য কোনও ES6 সমাধান পোস্ট করা হয়নি।
ড্যারিল মেন্ডোনেজ


0

এটি অ্যারেগুলির জন্য কাজ করে:

function evenOrOdd(numbers) {
  const evenNumbers = [];
  const oddNumbers = [];
  numbers.forEach(number => {
    if (number % 2 === 0) {
      evenNumbers.push(number);
    } else {
      oddNumbers.push(number);
    }
  });

  console.log("Even: " + evenNumbers + "\nOdd: " + oddNumbers);
}

evenOrOdd([1, 4, 9, 21, 41, 92]);

এটি লগ আউট করা উচিত: 4,92 1,9,21,41

কেবল একটি সংখ্যার জন্য:

function evenOrOdd(number) {
  if (number % 2 === 0) {
    return "even";
  }

  return "odd";
}

console.log(evenOrOdd(4));

এটি কনসোল পর্যন্ত আউটপুট করা উচিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.