জাভাস্ক্রিপ্টে স্ট্রিং তালিকায় রয়েছে কিনা তা নির্ধারণ করুন


262

এসকিউএল-তে আমরা দেখতে পাচ্ছি যে স্ট্রিং এর মতো তালিকায় রয়েছে কিনা:

Column IN ('a', 'b', 'c')

জাভাস্ক্রিপ্ট এ করার একটি ভাল উপায় কি? এটি করা এতটা ছদ্মবেশী:

if (expression1 || expression2 || str === 'a' || str === 'b' || str === 'c') {
   // do something
}

এবং আমি এর কার্য সম্পাদন বা স্পষ্টতা সম্পর্কে নিশ্চিত নই:

if (expression1 || expression2 || {a:1, b:1, c:1}[str]) {
   // do something
}

অথবা যে কোনওটি স্যুইচ ফাংশনটি ব্যবহার করতে পারে:

var str = 'a',
   flag = false;

switch (str) {
   case 'a':
   case 'b':
   case 'c':
      flag = true;
   default:
}

if (expression1 || expression2 || flag) {
   // do something
}

তবে এটি একটি ভয়াবহ জগাখিচুড়ি। কোন ধারনা?

এই ক্ষেত্রে, আমাকে ইন্টারনেট এক্সপ্লোরার 7 ব্যবহার করতে হবে কারণ এটি কর্পোরেট ইন্ট্রানেট পৃষ্ঠার জন্য। সুতরাং ['a', 'b', 'c'].indexOf(str) !== -1কিছু সিনট্যাক্স চিনি ছাড়া স্থানীয়ভাবে কাজ করবে না।


1
"স্ট্রিংটি তালিকায় রয়েছে" এবং "অ্যারেতে কোনও বস্তুর অন্তর্ভুক্ত রয়েছে" এর মধ্যে ঠিক পার্থক্যটি কী আপনি ব্যাখ্যা করতে পারেন?
মিশা পেরেকোভস্কি

2
@ গথডো কারণ একটি তালিকা সর্বদা একটি অ্যারে হয় না, এবং স্ট্রিং কোনও বস্তু নয়? কিভাবে এটি পরিষ্কার হতে পারে?
এরিক

@ErikE যদি এই ক্ষেত্রে কি উল্লেখ করা হয় উল্লেখ্য / উত্তর দেয়া তারপর এই প্রশ্ন বন্ধ করে দেওয়া উচিত সেখানে কোনও খয়রাত হওয়া উচিত নয়। ইতিমধ্যে পোস্ট করা উত্তরগুলি কারও কাছে সহায়তা পাওয়ার জন্য যথেষ্ট।
বিকাশদীপ সিং

@ ভিকজর্ডান সম্ভবত আপনি আপনার মন্তব্যটি মুছে ফেলতে চাইবেন কারণ এটি আর প্রয়োগ হয় না।
এরিক

উত্তর:


279

আপনি কল করতে পারেন indexOf:

if (['a', 'b', 'c'].indexOf(str) >= 0) {
    //do something
}

15
একমাত্র সমস্যাটি Array.prototype.indexOfহ'ল এটি IE এ কাজ করবে না, দুঃখের বিষয় এমনকি আই 8-তেও এই পদ্ধতিটির অভাব রয়েছে।
সিএমএস 2

2
আপনি চাইলে এটি সংজ্ঞা দিতে পারেন। দেখুন soledadpenades.com/2007/05/17/arrayindexof-in-internet-explorer
জেসন হল


8
@ImJasonH: যে পৃষ্ঠাতে কোড সত্যিই সত্যিই খারাপ এই প্রোগ্রামটিতে, উদাহরণস্বরূপ, চেক যদি Array.indexOfঅগ্রাহ্য সামনে বিদ্যমান Array.prototype.indexOfযা হয় না একই জিনিস। আমি এখানে মজিলার দ্বারা তৈরি বাস্তবায়নটি সুপারিশ করব: বিকাশকারী.মোজিলা.আর
সিএমএস

1
@ সিএমএস, এম্টুসিফোর শুনুন, মজিলা বাস্তবায়ন অনেক ভাল।
জেসন হল

230

ইকামাস্ক্রিপ্ট।

আপনি যদি ES6 ব্যবহার করছেন তবে আপনি আইটেমগুলির একটি অ্যারে তৈরি করতে এবং ব্যবহার করতে পারেন includes:

['a', 'b', 'c'].includes('b')

এই কিছু সহজাত বেনিফিট আছে indexOfকারণ এটি সঠিকভাবে উপস্থিতি পরীক্ষা করতে পারেন NaNতালিকায় এবং এই ধরনের মধ্যে মধ্যম এক হিসাবে অনুপস্থিত অ্যারে উপাদানের মেলাতে পারে [1, , 2]থেকে undefinedজাভাস্ক্রিপ্ট টাইপ করা অ্যারে যেমন includesকাজ করে ।Uint8Array

আপনি যদি ব্রাউজার সমর্থন সম্পর্কে উদ্বিগ্ন হন (যেমন আইই বা এজ হিসাবে) তবে আপনি CanIUse.Com এ চেকArray.includes করতে পারেন এবং যদি আপনি ব্রাউজার বা ব্রাউজারের যে সংস্করণটি অনুপস্থিত রয়েছে তা লক্ষ্য করতে চান includes, তবে আমি পলিফিলিংয়ের জন্য পলিফিল.ওয়ের প্রস্তাব দিই।

আন অ্যারে ছাড়াই

আপনি নীচে isInListস্ট্রিংগুলিতে একটি নতুন সম্পত্তি যুক্ত করতে পারেন :

if (!String.prototype.isInList) {
   String.prototype.isInList = function() {
      let value = this.valueOf();
      for (let i = 0, l = arguments.length; i < l; i += 1) {
         if (arguments[i] === value) return true;
      }
      return false;
   }
}

তারপরে এটির মতো ব্যবহার করুন:

'fox'.isInList('weasel', 'fox', 'stoat') // true
'fox'.isInList('weasel', 'stoat') // false

আপনি একই জিনিস করতে পারেন Number.prototype

Array.indexOf

আপনি যদি কোনও আধুনিক ব্রাউজার ব্যবহার করছেন তবে indexOfসর্বদা কাজ করে। যাইহোক, আইই 8 এবং এর আগে আপনার পলিফিল লাগবে।

যদি indexOf-1 প্রদান করে তবে আইটেমটি তালিকায় নেই। যদিও মনে রাখবেন যে এই পদ্ধতিটি সঠিকভাবে যাচাই করবে না NaNএবং এটি একটি স্পষ্টর সাথে মেলে তবে এটি undefinedকোনও অনুপস্থিত উপাদানটির সাথে undefinedঅ্যারের মতো মেলে না [1, , 2]

আইই indexOfবা includesএর জন্য পলিফিল বা অন্য কোনও ব্রাউজার / সংস্করণ সমর্থনটির অভাব রয়েছে

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

এই পরিস্থিতিতে যেখানে আমাকে ইন্টারনেট এক্সপ্লোরার 7 এর জন্য একটি সমাধান করতে হয়েছিল, আমি indexOf()মানক-অনুবর্তী নয় এমন ফাংশনটির সহজ সংস্করণটি "আমার নিজের" ঘূর্ণিত করেছি :

if (!Array.prototype.indexOf) {
   Array.prototype.indexOf = function(item) {
      var i = this.length;
      while (i--) {
         if (this[i] === item) return i;
      }
      return -1;
   }
}

তবে, আমি মনে করি না যে Array.prototypeদীর্ঘমেয়াদে সংশোধন করা সবচেয়ে ভাল উত্তর। জাভাস্ক্রিপ্টে সংশোধন করা ObjectArrayপ্রোটোটাইপগুলি গুরুতর বাগগুলি হতে পারে। আপনার নিজের পরিবেশে এটি করা নিরাপদ কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে। প্রাথমিক নোটের মধ্যে হ'ল একটি অ্যারের পুনরুক্তি করা (যখন অ্যারে.প্রোটোটাইপ বৈশিষ্ট্য যুক্ত করেছে) for ... inনতুন ফাংশনটির নামটি কীগুলির মধ্যে একটি হিসাবে ফিরিয়ে দেবে:

Array.prototype.blah = function() { console.log('blah'); };
let arr = [1, 2, 3];
for (let x in arr) { console.log(x); }
// Result:
0
1
2
blah // Extra member iterated over!

আপনার কোডটি এখনই কাজ করতে পারে তবে ভবিষ্যতে কেউ তৃতীয় পক্ষের জাভাস্ক্রিপ্ট লাইব্রেরি বা প্লাগইন যুক্ত করবেন যা উত্তরাধিকারসূত্রে প্রাপ্ত কীগুলির বিরুদ্ধে উদ্যোগীভাবে রক্ষা করছে না, সমস্ত কিছু ভেঙে যেতে পারে।

সেই ভাঙ্গন এড়াতে পুরানো উপায় হ'ল গণনার সময় প্রতিটি মান পরীক্ষা করে দেখতে হবে যে বস্তুটির আসলে এটি উত্তরাধিকারসূত্রে প্রাপ্ত সম্পত্তি হিসাবে আছে কিনা if (arr.hasOwnProperty(x))এবং কেবল তখনই এটির সাথে কাজ করবে x

এই অতিরিক্ত-কী সমস্যাটি এড়াতে নতুন ES6 উপায়টি , এর ofপরিবর্তে ব্যবহার করা । তবে আপনি যদি এই গ্যারান্টি দিতে না পারেন যে আপনার সমস্ত কোড এবং তৃতীয় পক্ষের গ্রন্থাগারগুলি এই পদ্ধতির সাথে কঠোরভাবে আটকে রয়েছে, তবে এই প্রশ্নের প্রয়োজনে আপনি সম্ভবত উপরে বর্ণিত হিসাবে ব্যবহার করতে চাইবেন ।infor (let x of arr)includes


2
এমডিএন সরবরাহের জন্য এখানে আরও একটি ভাল পলিফিল রয়েছেindexOf । এটি মূলত একই জিনিসটি করে তবে সহজ মূল্যায়নের জন্য বেশ কয়েকটি শর্ট সার্কিট।
কাইলমিত

1
ডাউনভোটার: দয়া করে মন্তব্য করুন। এ নিয়ে সমস্যা কী? এই ফাংশনটি মানসম্পন্ন নয় এবং হওয়ার চেষ্টা করছে না।
এরিক

আপনার ইতিমধ্যে পরীক্ষিত কিছু ব্যবহার করা উচিত যেমন পলিফিলের মতো @ কাইলমিট লিঙ্কটি লিখেছেন: বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

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

@ এরিক আপনি ঠিক বলেছেন এই ফাংশনটি মারা গেছে এবং যে কেউ আপনার উত্তর ব্যবহার করছে তা এটি জানা উচিত। আমি আপনার লিঙ্কটি প্রথম স্থানে দেখতে পাইনি কারণ আমি "উত্তরগুলি"
খুঁজছিলাম

53

উত্তরগুলির বেশিরভাগই Array.prototype.indexOfপদ্ধতিটি নির্দেশ করে , একমাত্র সমস্যা হ'ল এটি IE9 এর আগে কোনও আইই সংস্করণে কাজ করবে না ।

বিকল্প হিসাবে আমি আপনাকে আরও দুটি বিকল্প রেখে যা সমস্ত ব্রাউজারগুলিতে কাজ করবে:

if (/Foo|Bar|Baz/.test(str)) {
  // ...
}


if (str.match("Foo|Bar|Baz")) {
  // ...
}

হুম, সিএমএস উল্লেখ করার জন্য ধন্যবাদ। এটি ঠিক তাই ঘটে যে এটি কর্পোরেট ইন্ট্রনেটের জন্য এবং তারা ব্যবহার করে ... অনুমান কী ... আইই। যেহেতু নিয়মিত প্রকাশের পদ্ধতিটি আমাকে উইলগুলি দেয়, আমাকে হয় একটি ফাংশন তৈরি করতে হবে যা লুপ করে, বা আমার পোস্টে প্রস্তাবিত অবজেক্ট পদ্ধতিটি ব্যবহার করবে (তৃতীয় কোড ব্লক)।
এরিক

13
এটি মিলবে "HiFooThere"- আমি /^(?:Foo|Bar|Baz)$/পরিবর্তে যাব (স্ট্রিংয়ের শুরু, নন-ক্যাপচারিং গ্রুপ, স্ট্রিংয়ের শেষ)।
ট্রুউইল

indexOfএমডিএন অনুসারে এখন আইই 9 এবং তারপরে সমর্থিত ।
krock

28

অ্যারেগুলির একটি indexOfপদ্ধতি রয়েছে যা স্ট্রিংগুলি অনুসন্ধান করতে ব্যবহার করা যেতে পারে:

js> a = ['foo', 'bar', 'baz']
foo,bar,baz
js> a.indexOf('bar')
1
js> a.indexOf('quux')
-1

3
এটি পুরানো ব্রাউজারগুলিতে ব্যর্থ হবে।
এপাসকারেলো

ওহো ... এটি IE তে কাজ করে না তা উল্লেখ করা ভাল হত। :)
এরিক

2
@ পেসকারেলো: কেবল পুরানো ব্রাউজারগুলিতেই নয়, এটি কোনও আইই, এমনকি আই 88 এ ব্যর্থ হবে :(
সিএমএস

12

আমি ব্যবহার করেছি একটি কৌশল

>>> ("something" in {"a string":"", "somthing":"", "another string":""})
false
>>> ("something" in {"a string":"", "something":"", "another string":""})
true

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

>>> a = ["a string", "something", "another string"];
>>> b = {};
>>> for(var i=0; i<a.length;i++){b[a[i]]="";} /* Transform the array in a dict */
>>> ("something" in b)
true

ভয়েজার, আমার প্রশ্নের তৃতীয় কোড ব্লকটি যেমন দেখায় আইটেমটিকে অবজ্ঞার চেয়ে আরও দ্রুত / ধীর / আরও ভাল / আরও খারাপ "" ব্যবহার করছে? এছাড়াও, আপনি যদি জিনিসটির মধ্য দিয়ে লুপ করতে চলেছেন তবে আমি বুঝতে পারি যে ততক্ষণে উপাদানটি অ্যারেতে রয়েছে কিনা তা পরীক্ষা করতে পারে ... কেবল কোনও ফাংশনে লুপটি জড়ান। এবং এটির জন্য মূল্য var i=a.length;while (i--) {/*use a[i]*/}হ'ল দ্রুততম লুপ পদ্ধতি (যদি বিপরীত ক্রম গ্রহণযোগ্য হয়)।
এরিক

এম্টুসিফোর: এটি আপনি যা করছেন তার উপর নির্ভর করে এবং আমি ধারণা করি যে এটি বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিনগুলিতে আলাদাভাবে কাজ করতে পারে। যদি আপনার ডেটাটির যে কোনও মুহুর্তে অভিধানের ব্যবহারের প্রয়োজন হয়, তবে এটিকে এভাবে তৈরি করা ভাল। আমি মনে করি ইঞ্জিনগুলির প্রয়োগের বিশদ (অবজেক্টের জন্য হ্যাশ টেবিলের ব্যবহার) এর কারণে এটি আরও দ্রুত হবে ডিক অবজেক্টটি তৈরি হয়ে
এস্তেবান কাবার

জাভাস্ক্রিপ্টে, এটিকে ডিক বলা হয় না, একে একটি বস্তু বলা হয় ।
সলোমন উকো

8

এখানে আমার:

String.prototype.inList=function(list){
    return (Array.apply(null, arguments).indexOf(this.toString()) != -1)
}

var x = 'abc';
if (x.inList('aaa','bbb','abc'))
    console.log('yes');
else
    console.log('no');

আপনি যদি অ্যারে পাস করে ঠিক থাকেন তবে এইটি দ্রুততর:

String.prototype.inList=function(list){
    return (list.indexOf(this.toString()) != -1)
}

var x = 'abc';
if (x.inList(['aaa','bbb','abc']))
    console.log('yes')

এখানে jsperf: http://jsperf.com/bmcgin-inlsit


সত্যি বলতে গেলে, আপনি যেখানে অ্যারে পাস করেছেন সে সম্ভবত আরও কার্যকর হবে এবং এটি সম্ভবত Arrayপ্রোটোটাইপের উপর থাকতে পারে : সম্ভবত এমন কিছু Array.prototype.contains
সলোমন উকো

6

RegExpসর্বজনীন, তবে আমি বুঝতে পারি যে আপনি অ্যারে নিয়ে কাজ করছেন। সুতরাং, এই পদ্ধতির চেক আউট। আমি এটি ব্যবহার করতে ব্যবহার করি এবং এটি খুব কার্যকর এবং দ্রুত জ্বলন্ত!

var str = 'some string with a';
var list = ['a', 'b', 'c'];
var rx = new RegExp(list.join('|'));

rx.test(str);

আপনি কিছু পরিবর্তনও প্রয়োগ করতে পারেন, যেমন:

এক রৈখিক

new RegExp(list.join('|')).test(str);

কেস সংবেদনশীল

var rx = new RegExp(list.join('|').concat('/i'));


এবং আরও অনেক কিছু!


রেজেক্স ব্যবহারের জন্য বিশেষ অক্ষরের একটি গুচ্ছ এড়ানো প্রয়োজন। এটিও কম পরিষ্কার is আমি এটি একটি ভাল সমাধান মনে করি না।
এরিক

@ এরিক আমি আপনার রিজার্ভেশনগুলি বুঝতে পেরেছি তাই আমি আমার উত্তর আপডেট করেছিলাম যা অন্য কোড যুক্ত করে রেজিএক্সপ ব্যবহার করে না, এটি আইই এর সাথে প্রত্যাবর্তনযোগ্য, খুব বুদ্ধিমান এবং দ্রুত।
সোসপেরা

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

@ এরিক হ্যাঁ, আপনি ঠিক বলেছেন, আমি প্রশ্নের উত্তরগুলি পরীক্ষা করতে ব্যবহার করি না। এবং আমি সম্মত এটি সত্যিই অনুরূপ।

6

IndexOf ব্যবহার করে (এটি IE8 এর সাথে কাজ করে না)।

if (['apple', 'cherry', 'orange', 'banana'].indexOf(value) >= 0) {
    // found
}

আইই 8 সমর্থন করার জন্য, আপনি মজিলার সূচিপত্র কার্যকর করতে পারেন।

if (!Array.prototype.indexOf) {
    // indexOf polyfill code here
}

স্ট্রিং.প্রোটোটাইপ.ম্যাচ (ডক্স) এর মাধ্যমে নিয়মিত এক্সপ্রেশন।

if (fruit.match(/^(banana|lemon|mango|pineapple)$/)) {

}

1
আপনি কি খেয়াল করেছেন যে আপনি পৃষ্ঠাটিতে অন্য উত্তরগুলি হুবহু নকল করছেন? এটি কোনও মান যোগ করে না।
এরিক

5

দেখে মনে হচ্ছে আপনার in_array ফাংশনটি ব্যবহার করা দরকার।

jQuery -> ইনআরে

প্রোটোটাইপ -> অ্যারে.ইন্ডেক্সফ

অথবা, আপনি jQuery বা প্রোটোটাইপ ব্যবহার না করে থাকলে এই উদাহরণগুলি দেখুন:

স্টাইলিস্টিক নোট: থ্রিস্টিং থ্যাথিং নামক ভেরিয়েবলের নাম রাখা উচিত যা তারা কী (বিশেষ্য) রাখে সে সম্পর্কে আপনাকে কিছু বলার জন্য।


ওহ, এগুলি ভেরিয়েবল ছিল না তবে অভিব্যক্তির জন্য এলোমেলো স্থানধারক হিসাবে বোঝানো হয়েছিল ... আমি কীভাবে স্ক্রিপ্টটি ব্যবহারের পরিকল্পনা করেছি তার একটি উদাহরণ।
এরিক

5

ছাড়াও indexOf(যা অন্যান্য পোস্টার পরামর্শ দিয়েছেন), প্রোটোটাইপ এর ব্যবহার Enumerable.include () এই আরো ঝরঝরে এবং সংক্ষিপ্ত করতে পারেন:

var list = ['a', 'b', 'c'];
if (list.include(str)) {
  // do stuff
}

5
এনিউমারেবল.আইনক্লুড () অবমূল্যায়ন করা হয়েছে, তবে অ্যারে.প্রোটোটাইপ.হিন্ড () আসছে, এবং ইতিমধ্যে আইই (অবশ্যই) এবং এজ (অবশ্যই) বাদে বেশিরভাগ ব্রাউজারে কাজ করছে sers
হোয়াইটবার্ড

2

প্রশ্নের জন্য এবং অ্যারে.ইন্ডেক্সঅফ পদ্ধতিটি ব্যবহার করে সমাধানের জন্য ধন্যবাদ।

আমি এই সমাধান থেকে কোডটি একটি ইনলিস্ট () ফাংশন তৈরি করতে ব্যবহার করেছি যা আইএমও, লেখাকে সহজ করে এবং পাঠকে আরও পরিষ্কার করে দেয়:

function inList(psString, psList) 
{
    var laList = psList.split(',');

    var i = laList.length;
    while (i--) {
        if (laList[i] === psString) return true;
    }
    return false;
}

ব্যবহার:

if (inList('Houston', 'LA,New York,Houston') {
  // THEN do something when your string is in the list
}

1
জাভাস্ক্রিপ্ট অ্যারে আক্ষরিকাগুলি এত সহজ, আপনি করতে পারলে আপনি কেন বিভক্ত হবেন তা আমি দেখতে পাই না 'Houston'.inList(['LA', 'New York', 'Houston'])। সম্ভবত if (!String.prototype.inList) {String.prototype.inList = function(arr) {return arr.indexOf(this) >= 0};}বা আপনার whileপদ্ধতি ব্যবহার করে ।
এরিক

0

আমি অবাক হয়েছি যে কেউ একটি সাধারণ ফাংশন উল্লেখ করেনি যা স্ট্রিং এবং একটি তালিকা নেয়।

function in_list(needle, hay)
{
    var i, len;

    for (i = 0, len = hay.length; i < len; i++)
    {
        if (hay[i] == needle) { return true; }
    }

    return false;
}

var alist = ["test"];

console.log(in_list("test", alist));

জিম আপনার পরামর্শ অনুসারে ঠিক সেটাই করেছিল , স্যাম, ২৮ আগস্ট '11 এ 1: 29-এ। আসলে, আমার নির্বাচিত উত্তর, একই জিনিস প্রায় কাছাকাছি ঠিক সহ STRING সরবরাহ এই বরং একটি প্যারামিটার থাকে।
এরিক

@ এরিক দুঃখিত, আপনি বলেছিলেন জিমসের উত্তরটি আমার কাছে অদ্ভুত বলে মনে হয়েছিল। এবং আপনার গৃহীত উত্তর একটি ফেরত দেয় int, যেখানে কিছু লোকেরা এই প্রশ্নটি boolফিরে আসতে চাইলে ফিরে আসতে পারে। অঙ্কিত এটি কিছু লোককে সাহায্য করতে পারে।
স্যামুয়েল পারকিনসন

0

আমার সমাধানের ফলাফলটি এর মতো একটি সিনট্যাক্সে আসে:

// Checking to see if var 'column' is in array ['a', 'b', 'c']

if (column.isAmong(['a', 'b', 'c']) {
  // Do something
}

এবং আমি এটির মতো বেসিক অবজেক্ট প্রোটোটাইপ বাড়িয়ে এটি প্রয়োগ করি:

Object.prototype.isAmong = function (MyArray){
   for (var a=0; a<MyArray.length; a++) {
      if (this === MyArray[a]) { 
          return true;
      }
   }
   return false;
}

আমরা বিকল্পভাবে পদ্ধতিটির নাম আইএনআররে (তবে সম্ভবত আরআরাই নয়) বা কেবল ইসিইন নামকরণ করতে পারি।

সুবিধা: সহজ, সোজা এবং স্ব-ডকুমেন্টিং।


অবজেক্টটি প্রসারিত করতে সমস্যা হতে পারে। bolinfest.com/javascript/inheritance.php "গুগল ম্যাপস টিম এই কঠিন পদ্ধতিটি শিখেছে" এর অধীনে এবং ব্রাউজার বাস্তবায়ন বা অন্য ব্যবহারকারীর কোডের সাথে অসঙ্গতি। আমি এখনও মনে করি যে এরিকের উত্তর হ'ল হ্যাশম্যাপটি তৈরি হওয়ার পরে অ্যারে দিয়ে পুনরাবৃত্তি হ্যাশম্যাপে একটি কী খুঁজে পাওয়ার চেয়ে ধীরে ধীরে: myValues[key];যেখানে মাইভ্যালিউস একটি বস্তু এবং কী কোনও স্ট্রিং বা সংখ্যা number
এইচএমআর

-1

স্লাকসের উত্তরের একটি সরলীকৃত সংস্করণ এছাড়াও কাজ করে:

if ('abcdefghij'.indexOf(str) >= 0) {
    // Do something
}

.... যেহেতু স্ট্রিংগুলি নিজেরাই সাজানো থাকে। :)

যদি প্রয়োজন হয়, আমার আগে বর্ণিত হিসাবে ইন্টারনেট এক্সপ্লোরারের জন্য সূচক ফাংশনটি কার্যকর করুন।


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