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


144

জাভাস্ক্রিপ্টে, আমি যদি উইন্ডোর আকার 500px এর চেয়ে বেশি হয় তবে ব্রাউজারটিকে কিছু করতে বলছি। আমি এটি এর মতো করি:

if (windowsize > 500) {
    // do this
}

এটি দুর্দান্ত কাজ করে তবে আমি এই একই পদ্ধতিটি প্রয়োগ করতে চাই তবে সংখ্যার বিস্তৃত সাথে। সুতরাং আমি আমার ব্রাউজারটিকে বলতে চাই যে উইন্ডোর আকার 500px এবং 600px এর মধ্যে হয় stuff আমি জানি এটি কাজ করবে না, তবে আমি এখানে এটি কীভাবে কল্পনা করেছি:

if (windowsize > 500-600) {
    // do this
}

এটি কি জাভাস্ক্রিপ্টের মধ্যেই সম্ভব?


9
এই প্রশ্নটি বন্ধ করতে কিছুটা কঠোর বলে মনে হচ্ছে। আমি এটি আবার খুলতে ভোট দিতে পারি? এটি ভালভাবে লেখা এবং নমুনা কোড দেয়।
কলটার

অবশ্যই আরও সঠিক চেকটি হ'ল (উইন্ডোজাইজ> = 500 && উইন্ডোজাইজ <= 600) বা যদি (! (উইন্ডোজাইজ <500 ||
উইন্ডোজাইজ

উত্তর:


225

অর্থের windowsizeচেয়ে বড় 500এবং স্বল্প কিনা তা পরীক্ষা করে দেখা যায় 600যে মানগুলি 500বা 600নিজেই দুটোই শর্তটি সত্য হয়ে উঠবে না।

if (windowsize > 500 && windowsize < 600) {
  // ...
}

1
ধন্যবাদ অপরিবর্তিত, কেবলমাত্র এটি নিশ্চিত করতে ব্রাউজারের মধ্যে যা আমি চাই তা করব যখন উইন্ডোর আকারটি 500px এর চেয়ে বেশি হয় এবং 600px এর চেয়ে কম হয়, মূলত কেবল 500-600px এর মধ্যেই কাজ করে, সঠিক? (আমি এই জিনিসগুলির সাথে খুব ভাল আছি না)
ডাইক

1
@ ডাইক হ্যাঁ, এটি তাই করে :), নোট করুন যে jQuery কেবল একটি জাভাস্ক্রিপ্ট লাইব্রেরি।
undefined

7
মনে রাখবেন যে windowsizeকমপক্ষে 501px এবং সর্বাধিক 599px হলে এই অবস্থাটি ঠিক । 500px এবং 600px বাদ দেওয়া হয়েছে। আপনি যদি এই মানগুলি অন্তর্ভুক্ত করতে চান তবে তুলনাতে সমতা যুক্ত করুন।
রবার্ট করিতনিক

3
কেবল একটি বিশদ, তবে নিম্নলিখিত উপায়ে আরও পঠনযোগ্য:if(500 < windowsize && windowsize < 600)
জিওভান্নি বেনুসি

119

আমার একটি মুহূর্ত ছিল, সুতরাং, যদিও আপনি ইতিমধ্যে একটি উত্তর গ্রহণ করেছেন, আমি ভেবেছিলাম নিম্নলিখিতগুলি অবদান রাখব:

Number.prototype.between = function(a, b) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

জেএস ফিডল ডেমো

অথবা, আপনি যদি শেষের পয়েন্টগুলি সহ সংখ্যার সাথে সংখ্যার চেক করার বিকল্পটি পছন্দ করতে চান :

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return inclusive ? this >= min && this <= max : this > min && this < max;
};

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

জেএস ফিডল ডেমো

উপরোক্ত ক্ষেত্রে একটি সামান্য সংশোধন যোগ করার জন্য সম্পাদিত - প্রদত্ত - মন্তব্যে উল্লিখিত হিসাবে -

Function.prototype.apply()ধীর! যখন আপনার কাছে নির্দিষ্ট পরিমাণ যুক্তি যুক্ত থাকে তখন এটিকে কল করা অর্থহীন…

এটি Function.prototype.apply()প্রথমে 'অন্তর্ভুক্ত' বিকল্প ব্যতীত উপরের পদ্ধতিগুলির সংশোধিত সংস্করণ দেয় যা ব্যবহারটি সরিয়ে ফেলার উপযুক্ত ছিল:

Number.prototype.between = function(a, b) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

জেএস ফিডল ডেমো

এবং 'অন্তর্ভুক্ত' বিকল্পের সাথে:

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return inclusive ? this >= min && this <= max : this > min && this < max;
}

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

জেএস ফিডল ডেমো

তথ্যসূত্র:


6
সরাসরি ব্যবহারের পরিবর্তে কেন আবেদন করবেন Main.min(a,b)? ফাংশন.প্রোটোটাইপ.প্লাই ধীর! আপনার যখন নির্দিষ্ট পরিমাণ যুক্তি যুক্ত থাকে তখন এটিকে কল করা অর্থহীন।
ইস্পাত মস্তিষ্ক

আমি এটি আমার ডিফল্ট টুলবক্সে যুক্ত করতে যাচ্ছি - খুব সহজ এবং এই অবদানের জন্য ধন্যবাদ!
সিডওফসি

@ স্টিলব্রেন: আপনার একটা কথা আছে! আমি এটি প্রতিফলিত করার জন্য উত্তরটি আপডেট করেছি, যদিও আমার সন্দেহ হয়েছিল যে আমার ছিল - প্রাথমিকভাবে - এটি ব্যবহারের কারণFunction.prototype.apply() , তবে আমি ভাবতে পারি না এটি কী ছিল, বা হতে পারে have
ডেভিড বলছেন মনিকা

6
এটি এমন কোনও ফাংশন তৈরি করা ভাল যা Numberঅবজেক্টটি সংশোধন করে না create এটি একটি অ্যান্টি-প্যাটার্ন এবং যদি ইসিএমএ স্ট্যান্ডার্ডগুলি কোনও Number.between()ফাংশন অন্তর্ভুক্ত করতে পরিবর্তিত হয় , বা অন্য লাইব্রেরি বা কোডের অন্য অংশটি অন্য Number.prototype.betweenসংজ্ঞা দিয়ে অন্য কোথাও সংজ্ঞায়িত করে তবে আপনাকে কামড়াবে । পরিবর্তে, একটি সহায়ক ফাংশন তৈরি করুন এবং এটি ব্যবহার করুন!
রাজা ওয়াদিয়া

2
@ মোনার্চওয়াদিয়া যদিও আপনার বক্তব্যটি বোঝায় যে দেশীয় বস্তুগুলিকে সংশোধন / প্রসারিত করা খারাপ অভ্যাস, তবে আমি মনে করি যে এটি সর্বত্র প্রচার করা (কোনও অপরাধ নয়) এটি কিছুটা বাড়াবাড়ি। আমি "নেটিভ অবজেক্টগুলি সংশোধন করবেন না" দেখেছি এমন সময়গুলি গণনা করতে পারছি না। আমার জন্য, এটি এমন কোনও ব্যক্তি যে কোনও কোনও ক্ষতি হলে যদি তার ক্রেতার কাছে প্রতিবার ছুরির সম্ভাব্য ঝুঁকির বিষয়ে সতর্ক করে যে সে তার বিক্রেতার দায়িত্বের মতো বিক্রি করে তবে তার কোনও ক্ষতি হয়। বিপদগুলি সাধারণ জ্ঞান হওয়া উচিত। ব্যবহারকারী / সে সেগুলিকে অবহেলা করে বা না জানালে এটি নির্ভরযোগ্য।
আকিনুরি

80

আমি একটি অতিরিক্ত ইঙ্গিত দিতে অভ্যন্তরে ভেরিয়েবলটি রাখা পছন্দ করি যে কোডটি আমার ভেরিয়েবলটিকে বৈধ করে দিচ্ছে এটি একটি পরিসরের মানগুলির মধ্যে রয়েছে

if (500 < size && size < 600) { doStuff(); }

13
আমি এই স্টাইল পছন্দ! এটি মানিয়ে
নেবে

2
এটি আমার পছন্দ, যেহেতু এটি পাইথনের min < testval < maxসিনট্যাক্সের কাছাকাছি
ড্যাভারুইইনসভারিথিং

@ গৌরবচওলা আপনি কি এই উত্তরে কোড স্নিপেট উদাহরণের কথা বলছেন? আমার কোড স্নিপেটটি ছিল পাইথন, তুলনা করার জন্য ব্যবহৃত হয়েছিল
ড্যাভরইনসাইভারিংথিং

@ গৌরব চাওলা অন্যথায় অন্য কিছু বলেনি। আপনি অসম্মতি জানাচ্ছেন তা অস্পষ্ট।
ডেভরইনসেভারিথিং এথিং

28

এটি একটি পুরানো প্রশ্ন, তবে আমার মতো কারও পক্ষে এটি কার্যকর হতে পারে।

lodashহয়েছে _.inRange()ফাংশন https://lodash.com/docs/4.17.4#inRange

উদাহরণ:

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

দয়া করে নোট করুন যে এই পদ্ধতিটি Lodashইউটিলিটি লাইব্রেরিটি ব্যবহার করে এবং লোডাশের একটি ইনস্টলড সংস্করণে অ্যাক্সেসের প্রয়োজন।


2
শেষ মানটি অন্তর্ভুক্ত না হওয়ার চেয়ে দয়া করে সচেতন হন। যেমন। _.inRange(10, 0, 10) // => false
লুসিও

ওপি যেমন প্রশ্নের সুযোগ সীমিত করেছে Javascript, এটি লক্ষণীয় যে এই পদ্ধতিটি Lodashইউটিলিটি লাইব্রেরিটি ব্যবহার করে এবং লোডাশের একটি ইনস্টলড সংস্করণে অ্যাক্সেস প্রয়োজন।
ছায়া কুপার

2

আপনি ifলেখার পরিবর্তে একাধিক ধারা ব্যবহার করতে পারেন

if (windowsize > 500-600) {
    // do this
}

কারণ এটি যুক্তিযুক্তভাবে জাভাস্ক্রিপ্টটি শর্তটি পছন্দ করে আপনার পড়তে হবে কারণ কোন ধারণা নেই

windowSize > -100 

কারণ এটি গণনা 500-600করে-100

আপনার &&উভয় ক্ষেত্রে কঠোরভাবে পরীক্ষা করার জন্য ব্যবহার করা উচিত উদাহরণস্বরূপ যা এটি দেখতে পাবেন

if( windowSize > 500 && windowSize < 600 ){

// Then doo something

}

0

আমি বুটস্ট্র্যাপের মডেল মানগুলি দেখানোর জন্য এবং লুকানোর জন্য এই বিট jQuery প্রয়োগ করেছি। ব্যবহারকারীর পাঠ্যবক্স প্রবেশের মান সীমার ভিত্তিতে বিভিন্ন ক্ষেত্র প্রদর্শিত হয়।

$(document).ready(function () {
    jQuery.noConflict();
    var Ammount = document.getElementById('Ammount');

    $("#addtocart").click(function () {

            if ($(Ammount).val() >= 250 && $(Ammount).val() <= 499) {
                {
                    $('#myModal').modal();
                    $("#myModalLabelbronze").show();
                    $("#myModalLabelsilver").hide();
                    $("#myModalLabelgold").hide();
                    $("#myModalPbronze").show();
                    $("#myModalPSilver").hide();
                    $("#myModalPGold").hide();
                }
            }
    });

6
তুচ্ছ ফাংশনগুলির জন্য jQuery ব্যবহার করা ছিল ২০১৩ সালে সম্ভবত একটি বিকল্প তবে আজ নয়
মিগামসজেগার

3
সত্য তবে আমি ভয় করি যে লোকেরা আজও এটি ব্যবহার করবে
মিগামজাজার

1
কৌতূহলের বাইরে: এখনকার তুলনায় তুচ্ছ কাজগুলির জন্য jQuery কেন খারাপ?
জুলিক্স

2
@ জুলিক্স বেশিরভাগই পারফরম্যান্স করেন, যদিও এই ক্ষেত্রে নগণ্য। সাধারণ বিষয়টি হবে "যখন প্রয়োজন হবে না তখন jQuery ব্যবহার করবেন না" তবে এই মন্তব্যগুলি বিতর্ক শুরু করার (পুনরায়) স্থান নয়। এর সাথে মজা করুন :) i.stack.imgur.com/sGhaO.gif
লুকা

এটি কেবলমাত্র সমাধানের বাস্তবায়ন। ওপিতে ইতিমধ্যে মানগুলিতে অ্যাক্সেস রয়েছে। সুতরাং jQuery $().val()অপ্রাসঙ্গিক এবং প্রয়োজনীয় নয়। তবে আবার, প্রশ্নের মূল সংস্করণে, ওপিতে একটি সাধারণ গাণিতিক পরীক্ষার জন্য jQuery উল্লেখ করেছেন। (দীর্ঘশ্বাস) এটি প্রথম ভুল।
আকিনুরি

0

এখানে সংক্ষিপ্ততম পদ্ধতিটি সম্ভব:

if (Math.abs(v-550)<50) console.log('short')
if ((v-500)*(v-600)<0) console.log('short')

Parametrized:

if (Math.abs(v-max+v-min)<max+min) console.log('short')
if ((v-min)*(v-max)<0) console.log('short')

প্রথমটি কীভাবে কাজ করে তা আপনি যদি বুঝতে না পারেন তবে আপনি উভয় পক্ষকে 2 দিয়ে ভাগ করতে পারেন;)

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