মানটি বিভিন্ন সংখ্যার মধ্যে রয়েছে কিনা তা পরীক্ষা করে দেখুন


116

আমি মান গ্রহণযোগ্য সীমার মধ্যে আছে কিনা তা পরীক্ষা করতে চাই। যদি হ্যাঁ, কিছু করতে; অন্যথায়, অন্য কিছু।

পরিসরটি হ'ল 0.001-0.009। আমি ifএটি চেক করতে কীভাবে একাধিক ব্যবহার করতে হয় তা জানি তবে এটি একক ifবিবৃতিতে চেক করার কোনও উপায় আছে কিনা তা জানতে চাই ।


14
&&অপারেটর? ...
Vidime বিদাস

উত্তর:


226

আপনি সংখ্যার তুলনা সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করছেন, তাই নিয়মিত প্রকাশের সাথে সমস্যার সাথে সত্যিই কিছু করার নেই। ifএটি করার জন্য আপনার "একাধিক " বিবৃতি দরকার নেই , হয়:

if (x >= 0.001 && x <= 0.009) {
  // something
}

আপনি নিজেকে একটি "()" ফাংশন লিখতে পারেন:

function between(x, min, max) {
  return x >= min && x <= max;
}
// ...
if (between(x, 0.001, 0.009)) {
  // something
}

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

7
ঠিক আছে, আপনি যা বলছেন তা আমি প্রশংসা করি, তবে আমি পরামর্শ দিচ্ছি যে আপনি এখানে যে লোকেরা সাধারণত "তারা কী চাইছেন তা জেনে থাকতে পারে" সেই ভিত্তিটি নিয়ে আপনি পুনর্বিবেচনা করতে পারেন। এটি খুব সংকীর্ণ অর্থে সত্য হতে পারে , তবে প্রায়শই এই প্রশ্নগুলি কিছু খারাপ নকশার সিদ্ধান্তকে প্রতিবিম্বিত করে যা প্রতিবিম্বিত হওয়া উচিত তা প্রতিফলিত করে। আমি প্রায় 30 বছর ধরে প্রোগ্রামিং প্রশ্নগুলির উত্তর দিচ্ছি, তাই আমি এটি বহুবার ঘটতে দেখেছি। আমি অবশ্যই আরও ভাল প্রশ্ন পছন্দ করি, যেখানে সামগ্রিক লক্ষ্যটি পরিষ্কারভাবে ব্যাখ্যা করা হয়। এখানে, প্রশ্নটির কারণ সম্পর্কে আমাদের সত্যই ধারণা নেই , সুতরাং আমাদের কোনও প্রসঙ্গ নেই।
পয়েন্টি

6
আমি এর মতো সিনট্যাক্সটি ব্যবহার করতে চাই: যদি (0.001 <= x && x <= 0.009) {... me আমার কাছে কিছুটা স্পষ্ট মনে হয় :)
ওমরি

51

এখানে কেবল একটি একক তুলনা সহ একটি বিকল্প রয়েছে।

// return true if in range, otherwise false
function inRange(x, min, max) {
    return ((x-min)*(x-max) <= 0);
}

console.log(inRange(5, 1, 10));     // true
console.log(inRange(-5, 1, 10));    // false
console.log(inRange(20, 1, 10));    // false

এটি মিষ্টি এটি মিন কম বা সর্বাধিক কম হলেও এটি কার্যকর হবে তা বিবেচ্য নয়। আসলে কমপক্ষে, শুরু, শেষের মতো সর্বোচ্চ কিছু বলা ভাল। মহান আলগো কোনওভাবে ধন্যবাদ ধন্যবাদ!
জেমস হ্যারিংটন

4
কেউ কি সময়ের জটিলতার কথা চিন্তা করবেন না !? আমি গ্রহণযোগ্য সমাধানের সাথে যাব কারণ Θ (2) এ দুটি তুলনা এক তুলনায় ভাল এবং ও (4) এ তিনটি পাটিগণিত ক্রিয়াকলাপের চেয়ে ভাল।
ম্যাট ম্যাকার্থি

আপনি নিজেকে যা কল্পনা করেছিলেন তা আমি কখনও দাবি করি নি। তবুও এটি একটি কার্যকর বিকল্প able
আলেকজান্ডার

20

যদি আপনাকে অবশ্যই একটি রেজিপেক্স ব্যবহার করতে হয় (এবং সত্যই, আপনার উচিত নয়!) এটি কাজ করবে:

/^0\.00([1-8]\d*|90*)$/

কাজ করা উচিত, যেমন

  • ^ আগে কিছুই না,
  • এর পরে 0.00(এনবি: .চরিত্রটির জন্য ব্যাকস্ল্যাশ পালানো )
  • 1 এর পরে 8 পর্যন্ত এবং অতিরিক্ত সংখ্যার যে কোনও সংখ্যা
  • বা 9, এর পরে যেকোনো শূন্যের সংখ্যা
  • $: এরপরে আর কিছুই নয়

8

আপনি যদি ইতিমধ্যে ব্যবহার করছেন তবে আপনি lodashএই inRange()ফাংশনটি ব্যবহার করতে পারেন : https://lodash.com/docs/4.17.15#inRange

_.inRange(3, 2, 4);
// => true

_.inRange(4, 8);
// => true

_.inRange(4, 2);
// => false

_.inRange(2, 2);
// => false

_.inRange(1.2, 2);
// => true

_.inRange(5.2, 4);
// => false

_.inRange(-3, -2, -6);
// => true

3

আমি পন্টির betweenকাজটি পছন্দ করি তাই আমি আমার অনুরূপ একটি অনুরূপ লিখেছিলাম যা আমার দৃশ্যের জন্য ভালভাবে কাজ করেছে।

/**
 * Checks if an integer is within ±x another integer.
 * @param {int} op - The integer in question
 * @param {int} target - The integer to compare to
 * @param {int} range - the range ±
 */
function nearInt(op, target, range) {
    return op < target + range && op > target - range;
}

সুতরাং আপনি যদি দেখতে চান যে xএটির 10 ডলারের মধ্যে রয়েছে কিনা y:

var x = 100;
var y = 115;
nearInt(x,y,10) = false

আমি এটি মোবাইলে দীর্ঘ-প্রেস সনাক্তকরণের জন্য ব্যবহার করছি:

//make sure they haven't moved too much during long press.
if (!nearInt(Last.x,Start.x,5) || !nearInt(Last.y, Start.y,5)) clearTimeout(t);

2

যদি আপনি চান যে আপনার কোডটি নির্দিষ্ট পরিসরের সংখ্যা বেছে নিতে পারে তবে &&তার পরিবর্তে অপারেটরটি ব্যবহার করার বিষয়টি নিশ্চিত হন ||

if (x >= 4 && x <= 9) {
  // do something
} else {
  // do something else
}

// be sure not to do this

if (x >= 4 || x <= 9) {
  // do something
} else {
  // do something else
}


0

শর্তটি লেখার আগে আপনাকে অবশ্যই নিম্ন এবং উপরের সীমাটি নির্ধারণ করতে হবে

function between(value,first,last) {

 let lower = Math.min(first,last) , upper = Math.max(first,last);
 return value >= lower &&  value <= upper ;

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