সূচক () এবং অনুসন্ধান () এর মধ্যে পার্থক্য কী?


180

জাভাস্ক্রিপ্টে মোটামুটি নতুন হওয়ার কারণে আমি এগুলির প্রত্যেকটি কখন ব্যবহার করতে পারি তা বুঝতে পারছি না।

কেউ কি আমার জন্য এটি পরিষ্কার করতে সহায়তা করতে পারে?

উত্তর:


211

আপনার যদি নিয়মিত মত প্রকাশের প্রয়োজন হয় তবে ব্যবহার করুন search()। অন্যথায়, indexOf()দ্রুত হতে চলেছে।


31
এই দাবি সমর্থন করার জন্য কোন রেফারেন্স?
রবিস্রোব

16
এছাড়াও, searchআপনি না চাইলেও একটি স্ট্রিংকে একটি রেজিজেসে মূল্যায়ন করবে।
ক্রেগোক্স

26
@ ক্রেগোক্সের মন্তব্য গুরুত্বপূর্ণ - চেষ্টা করুন "hello.".search(".")- এটি 0 নয়, 5 টি প্রত্যাবর্তন করবে কারণ ."কোনও চরিত্র"


14

অনুসন্ধান ফাংশন ( এখানে একটি বিবরণ ) একটি নিয়মিত অভিব্যক্তি গ্রহণ করে, যা আপনাকে আরও পরিশীলিত প্যাটার্স, কেস-সংবেদনশীল স্ট্রিং ইত্যাদির সাথে মেলে তুলতে দেয়, যখন সূচিপত্র ( এখানে একটি বিবরণ ) কেবল একটি আক্ষরিক স্ট্রিংয়ের সাথে মেলে। তবে সূচিপত্রও আপনাকে একটি সূচনা সূচক নির্দিষ্ট করতে দেয়।



4

সূচিপত্র () - এটি স্ট্রিং লিটারেল বা স্ট্রিং অবজেক্ট গ্রহণ করে তবে নিয়মিত প্রকাশ হয় না । এটি থেকে অনুসন্ধান শুরু করার জন্য এটি শূন্য-ভিত্তিক পূর্ণসংখ্যার মানও গ্রহণ করে, যেমন:

  1. "Babyelephant" .indexOf ( "ই"); // আপনাকে দেয় 4
  2. "Babyelephant" .indexOf ( "ই", 5); // 6 তম অবস্থান বা 5 তম সূচক থেকে অনুসন্ধান শুরু হওয়ার সাথে সাথে আপনাকে 6 দেয়।
  3. var m = / e /; "Babyelephant" .indexOf (মি); // নিয়মিত এক্সপ্রেশন গ্রহণ না করে -1 দেয়।

অনুসন্ধান () - উভয় স্ট্রিং লিটারেল বা স্ট্রিং অবজেক্ট এবং নিয়মিত এক্সপ্রেশন গ্রহণ করে। তবে অনুসন্ধানটি শুরু করার জন্য এটি কোনও সূচি গ্রহণ করে না।


এটি কি জন্য ফিরে আসে "baby/e/lephant".indexOf(m);?
রামনেন শেফ

1
ভাল ... এটি ফিরে আসবে 4.. কারণ / ই / স্ট্রিং উপস্থিত রয়েছে..কিন্তু আপনি যদি একটি রেইজেক্স "e" সন্ধান করতে চান তবে আপনি পছন্দসই ফলাফল পাচ্ছেন না। ইউএমএম হতে পারে আমার ইনডেক্সও-এর উত্তরটি সংশোধন করা উচিত () রিজেক্সকে স্ট্রিং আক্ষরিক হিসাবে আবিষ্কার করার চেষ্টা করেছে, রেজেক্স হিসাবে নয়।
বাবলু

4

সূচিপত্র () এবং অনুসন্ধান ()

  • উভয় মধ্যে সাধারণ

    i) অনুসন্ধান করা মানের প্রথম ঘটনাটি ফিরিয়ে দিন

    ii) কোনও মিল না পেলে ফিরুন -1

    let str='Book is booked for delivery'
    str.indexOf('b')   // returns position 8
    str.search('b')    // returns position 8 

  • ইনডেক্সে বিশেষ ()

    i) আপনি দ্বিতীয় যুক্তি হিসাবে অনুসন্ধানের সূচনা দিতে পারেন

    str.indexOf('k')   // 3
    str.indexOf('k',4) // 11 (it start search from 4th position) 

  • অনুসন্ধানে বিশেষ ()

অনুসন্ধান মান নিয়মিত প্রকাশ হতে পারে

str.search('book') // 8
str.search(/book/i)  // 0   ( /i =case-insensitive   (Book == book)

উল্লেখ


2

অনুসন্ধান এটি নিয়মিত প্রকাশের সাথে মিলে যায় তবে এর কোনও অফসেট নেই। সূচকগুলি ম্যাচের জন্য আক্ষরিক ব্যবহার করে তবে এটি অফসেটে রয়েছে।

সূচিপত্র

অনুসন্ধান করুন


2
অনুসন্ধান একটি অফসেট ফেরত দেয়বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

-1

একটি রেজেক্স ব্যতীত , সূচিপত্রঅনুসন্ধানের মধ্যে ব্যবহারিক পার্থক্য নেই ।

নীচের উদাহরণটি একটি লাইভ ডেমো দেয় :

function FromSearch() {

  var str = document.getElementById("demo").innerText;
  var n = str.search("difference");
  document.getElementById("Location").innerHTML = n;
}

function FromindexOf() {
  var str = document.getElementById("demo").innerText;
  var n = str.indexOf("difference");
  document.getElementById("Location").innerHTML = n;
}
<p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a>
</p>

<button onclick="FromSearch()">From search</button>

<button onclick="FromindexOf()">From indexOf</button>

<p>Location of difference in the above sentence is:</p>

<mark id="Location"></mark>


1
একটি তাত্পর্যপূর্ণ পার্থক্য রয়েছে: searchএকটি স্ট্রিংকে একটিতে রূপান্তরিত করে RegExp, উদাহরণস্বরূপ, str.search("d........e");39 অক্ষরটিও মিলবে
একটিতে অক্ষরটিও মিলবে 1j01
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.