আপনার মানগুলিকে একটি অ্যারেতে রাখুন এবং আপনার আইটেমটি অ্যারেতে রয়েছে কিনা তা পরীক্ষা করুন:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
আপনার সমর্থন করা কোনও ব্রাউজারের যদি Array#includesপদ্ধতি না থাকে তবে আপনি এই পলিফিলটি ব্যবহার করতে পারেন ।
~টিল্ড শর্টকাটের সংক্ষিপ্ত ব্যাখ্যা :
আপডেট: যেহেতু এখন আমাদের includesপদ্ধতি রয়েছে তাই ~হ্যাকটি আর ব্যবহার করার কোনও মানে নেই। এটি এখানে কীভাবে কাজ করে এবং / অথবা অন্যের কোডটিতে এর মুখোমুখি হয়েছে তা জানতে আগ্রহী এমন লোকদের জন্য এখানে রাখুন।
পরিবর্তে টিক চিহ্ন দেওয়ার যদি ফলাফলের এর indexOfহয় >= 0, সেখানে একটি চমৎকার সামান্য শর্টকাট:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
এখানে হৈচৈ পড়েছে: http://jsfiddle.net/HYJvK/
কিভাবে কাজ করে? অ্যারেতে যদি কোনও আইটেম পাওয়া যায়, তবে indexOfতার সূচকটি ফেরত দেয়। আইটেমটি পাওয়া না গেলে এটি ফিরে আসবে -1। অত্যধিক বিস্তারিত মধ্যে পেয়ে ছাড়া, ~একটি হল bitwise না অপারেটর , যা ফিরে আসবে 0শুধুমাত্র -1।
আমি ~শর্টকাটটি ব্যবহার করতে পছন্দ করি , যেহেতু এটি রিটার্ন মানটির সাথে তুলনা করার চেয়ে বেশি সাফল্যযুক্ত। আমি আশা করি জাভাস্ক্রিপ্টের এমন কোনও in_arrayফাংশন রয়েছে যা সরাসরি বুলিয়ান (পিএইচপি এর অনুরূপ) ফিরিয়ে দেয় তবে এটি কেবল ইচ্ছুক চিন্তাভাবনা ( আপডেট: এটি এখন করে It's এটি বলা হয় includesabove উপরে দেখুন)। নোট করুন যে jQuery এর inArrayপিএইচপি এর পদ্ধতি স্বাক্ষর ভাগ করার সময়, প্রকৃতপক্ষে দেশীয় indexOfকার্যকারিতা নকল করে (যা বিভিন্ন ক্ষেত্রে কার্যকর, যদি সূচকটি সত্যিকারের পরে থাকে তবে)।
গুরুত্বপূর্ণ নোট: টিল্ড শর্টকাট ব্যবহার করে, বিতর্ক মধ্যে swathed করা কিছু বলে মনে হয় তীব্রভাবে বিশ্বাস করি যে কোড স্পষ্ট যথেষ্ট নয় এবং সব খরচ (এই উত্তরে মন্তব্য দেখতে) এ এড়িয়ে চলা উচিত। আপনি যদি তাদের অনুভূতিগুলি ভাগ করে নেন তবে আপনার .indexOf(...) >= 0সমাধানটি আটকে থাকা উচিত ।
একটু দীর্ঘ ব্যাখ্যা:
জাভাস্ক্রিপ্টে পূর্ণসংখ্যাগুলি স্বাক্ষরিত হয়, যার অর্থ বাম-সর্বাধিক বিটটি সাইন বিট হিসাবে সংরক্ষিত থাকে; নম্বরটি ধনাত্মক বা negativeণাত্মক কিনা তা চিহ্নিত করার জন্য একটি পতাকা, aণাত্মক 1হচ্ছে।
এখানে 32-বিট বাইনারি বিন্যাসে কিছু নমুনা ধনাত্মক সংখ্যা রয়েছে:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
এখন those একই নম্বর, কিন্তু নেতিবাচক:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
Theণাত্মক সংখ্যার জন্য কেন এমন অদ্ভুত সংমিশ্রণ? সহজ। Negativeণাত্মক সংখ্যাটি হ'ল ধনাত্মক সংখ্যার বিপরীত হয় + 1; ইতিবাচক সংখ্যায় নেতিবাচক সংখ্যা যুক্ত করা সর্বদা ফলন করা উচিত 0।
এটি বুঝতে, আসুন কয়েকটি সাধারণ বাইনারি পাটিগণিত করি।
এখানে কিভাবে আমরা যোগ হবে -1থেকে +1:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
এবং এখানে কিভাবে আমরা যোগ হবে -15থেকে +15:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
কীভাবে আমরা এই ফলাফলগুলি পেতে পারি? নিয়মিত সংযোজন করে, স্কুলে আমাদের যেভাবে শেখানো হয়েছিল: আপনি ডানদিকের সর্বাধিক কলামে শুরু করুন এবং আপনি সমস্ত সারি যুক্ত করেছেন। যোগফল যদি বৃহত্তম একক-অঙ্কের সংখ্যার চেয়ে বেশি হয় (যেটি দশমিক হয় 9তবে বাইনারি হয় 1) আমরা বাকী অংশটি পরবর্তী কলামে নিয়ে যাই।
এখন, আপনি লক্ষ্য করবেন যে, এর ইতিবাচক সংখ্যায় একটি নেতিবাচক সংখ্যা যুক্ত করার সময়, ডান-সর্বাধিক কলামটি যে সবগুলি নয়, 0সর্বদা দু'টি থাকে 1, যা একসাথে যুক্ত হওয়ার পরে ফলাফল হয় 2। দুটি সত্তার বাইনারি প্রতিনিধিত্ব 10, আমরা 1পরের কলামে বহন করি এবং ফলাফলটির 0জন্য প্রথম কলামে একটি রাখি । বাম দিকে অন্য সমস্ত কলামগুলির একটি সহ কেবল একটি সারি রয়েছে 1, সুতরাং 1পূর্ববর্তী কলামটি থেকে বাহিত হওয়া আবার যুক্ত হবে 2, যা পরে বহন করবে ... আমাদের বাম-সর্বাধিক কলামে পৌঁছা পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি করে, যেখানে 1জের করা এটা এত উপচে এবং হারানো পরার, কোথাও না যেতে আছে, এবং আমরা অবশিষ্ট করছি 0জুড়ে গুলি সব।
এই সিস্টেমটিকে 2 এর পরিপূরক বলা হয় । আপনি এখানে এই বিষয়ে আরও পড়তে পারেন:
স্বাক্ষরিত পূর্ণসংখ্যার জন্য 2 এর পরিপূরক প্রতিনিধিত্ব ।
এখন 2 এর পরিপূরক ক্র্যাশ কোর্স শেষ হয়ে গেছে, আপনি লক্ষ্য করবেন যে -1একমাত্র সংখ্যা যার বাইনারি উপস্থাপনা 1সর্বত্র জুড়ে।
~বিটওয়াইট নট অপারেটর ব্যবহার করে , প্রদত্ত সংখ্যার সমস্ত বিট উল্টানো হয়। 0সমস্ত বিট উল্টানো থেকে ফিরে আসার একমাত্র উপায় হ'ল যদি আমরা 1সমস্ত জুড়ে শুরু করি ।
সুতরাং, এই সমস্তটি বলার দীর্ঘ পথ ছিল যা ~nকেবল 0যদি ফিরে আসে তবেই ফিরে nআসবে -1।
in?