জাভাস্ক্রিপ্টের কোনও সংখ্যা সমান বা বিজোড় কিনা তা নির্ধারণ করতে কেউ আমাকে কিছু কোডের দিকে নির্দেশ করতে পারে?
%অপারেটর সম্পর্কে জানতাম &এবং ২। যদিও &তাত্ত্বিকভাবে দ্রুততর, এটি আসলে কোনও ব্যাপার নয় ।
জাভাস্ক্রিপ্টের কোনও সংখ্যা সমান বা বিজোড় কিনা তা নির্ধারণ করতে কেউ আমাকে কিছু কোডের দিকে নির্দেশ করতে পারে?
%অপারেটর সম্পর্কে জানতাম &এবং ২। যদিও &তাত্ত্বিকভাবে দ্রুততর, এটি আসলে কোনও ব্যাপার নয় ।
উত্তর:
নীচের কোডটি ব্যবহার করুন:
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 একটি সমান সংখ্যা উপস্থাপন করে।
0বা 1(বা NaNআপনি এটি এমন কোনও কিছু খাওয়ান যা একটি সংখ্যা নয় এবং একটিতে জোর করা যায় না), যা বেশিরভাগ পরিস্থিতিতে ভাল কাজ করবে। তবে আপনি যদি সত্যিকারের চান trueবা false:return (num % 2) == 1;
numপূর্ণসংখ্যা না হলে এটি ভগ্নাংশটি ফিরিয়ে দেবে । আপনি যদি তুলনা করেন তবে এটি এখনও কাজ করবে isOdd(1.5)==true(কারণ একটি ভগ্নাংশের মানটি সমান নয় true), তবে ফাংশনটি ফিরে আসলে trueবা false"ইসডড" নাম দ্বারা ইম্প্রেড করা ভাল হবে।
return !!(num % 2)বুলিয়ান
বিটওয়াইড 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 ); };
X % Y!
function isEven(n){return !(n & 1);}।
x & 1বিটটি সংখ্যায় সেট করা হয় কিনা তা পরীক্ষা করে (কারণ 1 সর্বনিম্ন উল্লেখযোগ্য বিট ব্যতীত সমস্ত বিট সমেত একটি সংখ্যা 1 হিসাবে সেট করা হয়) ): এটি যদি হয় তবে সংখ্যাটি বিজোড়, অন্যথায় এমনকি।
আপনি এরকম কিছু করতে পারেন:
function isEven(value){
if (value%2 == 0)
return true;
else
return false;
}
if (condition) { answer=true; } else { answer=false; }এটি কেবল অকারণে শব্দযুক্ত সংস্করণ answer = (bool) condition;। আপনার ফাংশনটি হ্রাস করুন function isEven(value) { return (bool) (value%2 == 0); }এবং আমরা সকলেই খুশি হব।
(bool)(এটি একটি ত্রুটি দেবে) এবং যে কোনও ক্ষেত্রে আপনার প্রয়োজন নেই: অপারেটর একটি বুলিয়ান ফেরত return value%2 == 0;দেওয়ার পরে কাজটি করবেন ==।
answer = !!(condition)। আমি যে পয়েন্টটি তৈরি করার চেষ্টা করছিলাম, তা হ'ল আপনি return value%2==0শর্তসাপেক্ষে বিরক্ত হওয়ার দরকার নেই এবং করতে পারেন না।
value%2===0
function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }
আমাকে কি এমন একটি অ্যারে তৈরি করতে হবে যা প্রচুর সংখ্যক রয়েছে
না। মডুলাস (%) ব্যবহার করুন। এটি আপনাকে যে দুটি সংখ্যা ভাগ করে দিচ্ছে তার বাকি অংশ দেয়।
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 এর অর্থ এটি সমান। অন্য যে কোনও কিছুর অর্থ এটি বিজোড়।
অনেক ভাষার মতো, জাভাস্ক্রিপ্টের একটি মডুলাস অপারেটর রয়েছে% , যা বিভাগের বাকী অংশ খুঁজে পায়। 2 দ্বারা বিভাজনের পরে যদি কোনও অবশিষ্ট না থাকে তবে একটি সংখ্যা এমনকি হয়:
// this expression is true if "number" is even, false otherwise
(number % 2 == 0)
এমনকি পূর্ণসংখ্যার জন্য পরীক্ষার জন্য এটি একটি খুব সাধারণ বুদ্ধিমান।
বিটওয়াইজ, কোডগল্ফিং সহ:
var isEven=n=>(n&1)?"odd":"even";
আপনি চারপাশে পাস করতে পারেন একটি সাধারণ ফাংশন। মডুলো অপারেটর ব্যবহার করে %:
var is_even = function(x) {
return !(x % 2);
}
is_even(3)
false
is_even(6)
true
return !(x % 2);
আমার এক্সটেনশনগুলি ব্যবহার করুন:
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 তে প্রোফাইলিং সম্পাদন করেছি । তবে ওওপ উপায়টি এখনও সবচেয়ে সুন্দর।
আপনি এটি -1 বা 0 না পৌঁছানো পর্যন্ত এটিতে 2 টি বিয়োগ করুন (কেবলমাত্র ইতিবাচক পূর্ণসংখ্যার জন্য স্পষ্টতই কাজ করে) :) :)
সংখ্যার সংখ্যা বা সিরিজটি বিজোড় কিনা তা নির্ধারণ করতে আপনি বিবৃতি এবং শর্তসাপেক্ষে একটি ব্যবহার করতে পারেন:
for (var i=1; i<=5; i++)
if (i%2 !== 0) {
console.log(i)
}
এটি প্রতিটি বিজোড় সংখ্যা 1 এবং 5 এর মধ্যে মুদ্রণ করবে।
এটি কেবলমাত্র অ্যাডোব ড্রিমউইভারে কার্যকর করা হয়েছে..এটি পুরোপুরি কার্যকর 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>
<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>
if (X % 2 === 0){
} else {
}
আপনার নাম্বার দিয়ে এক্স প্রতিস্থাপন করুন (একটি চলক থেকে আসতে পারে)। সংখ্যাটি সমান হলে, যদি বিবৃতিটি চলতে থাকে, অন্যথায় যখন বিজোড় হয়।
যদি আপনি কেবল জানতে চান যে কোনও প্রদত্ত নম্বর বিজোড়:
if (X % 2 !== 0){
}
আবার এক্সকে একটি সংখ্যা বা ভেরিয়েবলের সাথে প্রতিস্থাপন করুন।
দুটি বিজোড় সংখ্যা যখন দুটি পাতাগুলি দ্বারা ভাগ হয় তখন 1 হিসাবে অবশিষ্ট থাকে এবং প্রতিটি সমান সংখ্যা যখন শূন্য দ্বারা বিভাজিত হয় তখন অবশিষ্ট হিসাবে শূন্য ছেড়ে যায় leaves অতএব আমরা এই কোডটি ব্যবহার করতে পারি
function checker(number) {
return number%2==0?even:odd;
}
এই সম্পর্কে ...
var num = 3 //instead get your value here
var aa = ["Even", "Odd"];
alert(aa[num % 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);
কোনও কারণে আমাকে নিশ্চিত করতে হয়েছিল যে অ্যারের দৈর্ঘ্য এক এক করে কম হচ্ছে। যখন আমি এটি না করি, আমি বিজোড় সংখ্যা অ্যারের শেষ উপাদানটিতে "অপরিজ্ঞাত" পাই।
যখন আপনাকে কিছু ভেরিয়েবলটি বিজোড় হয় তা পরীক্ষা করার দরকার হয়, প্রথমে এটি পূর্ণসংখ্যা হয় কিনা তা পরীক্ষা করা উচিত । এছাড়াও, লক্ষ্য করুন যে আপনি যখন নেতিবাচক সংখ্যার উপর অবশিষ্ট গণনা করবেন, ফলাফলটি নেতিবাচক হবে ( -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
ব্যবহার %আপনাকে এটি করতে সহায়তা করবে ...
এটি আপনার জন্য আপনি কয়েকটি ফাংশন তৈরি করতে পারেন ... আমি জাভা স্ক্রিপ্টের সংখ্যার সাথে সংযুক্ত নয় এমন সেপার্ট ফাংশন পছন্দ করি যা আপনি নম্বরটি পাস করছেন কিনা তাও পরীক্ষা করে:
বিজোড় ফাংশন:
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
isOdd("str")মিথ্যা হতে হবে। isOdd(1.223)এবং isOdd(-1.223)ভুল হতে হবে। isOdd(0)মিথ্যা হতে হবে। 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-লাইন সমাধান। যাঁরা পঠনযোগ্যতার বিষয়ে চিন্তা করেন না তাদের জন্য।
const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;
(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চেক (প্রতিরক্ষা জন্য নয়) পারফরম্যান্সের জন্য করে তবে এটি অন্যান্য চেক করণ ছাড়া অকালে ফাংশন প্রস্থান করতে দেয়।
আমি এটি বাস্তবায়ন করতাম একটি বুলিয়ান ফেরত দেওয়ার জন্য:
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;
}
ES6 এ:
const isOdd = num => num % 2 == 1;
টেরিনারি অপারেটর ব্যবহার করে, আপনি বিজোড় সমান সংখ্যাগুলি পেতে পারেন:
var num = 2;
result = (num % 2 == 0) ? 'even' : 'odd'
console.log(result);
এটি অ্যারেগুলির জন্য কাজ করে:
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));
এটি কনসোল পর্যন্ত আউটপুট করা উচিত