একটি মান সহ অ্যারে সূচকটি কীভাবে সন্ধান করবেন?


199

বলুন আমি এই পেয়েছি

imageList = [100,200,300,400,500];

যা আমাকে দেয়

[0]100 [1]200 প্রভৃতি

মান সহ সূচকটি ফেরত দেওয়ার জন্য কি জাভাস্ক্রিপ্টের কোনও উপায় আছে?

অর্থাৎ আমি 200 এর জন্য সূচক চাই , আমি 1 ফেরত পাই ।


5
এখানে দুর্দান্ত উত্তর -> স্ট্যাকওভারফ্লো.com
মানসে

উত্তর:


316

আপনি ব্যবহার করতে পারেন indexOf:

var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1

এটি অ্যারেতে কোনও মান না পেলে আপনি -1 পাবেন।


2
আপনি এটি স্থির করতে বিকাশকারী.মোজিলা.আর.এন / জাভাস্ক্রিপ্ট / রেফারেন্স / গ্লোবাল_অবজেক্টস /… বা যে কোনও জাভাস্ক্রিপ্ট কাঠামো ব্যবহার করতে পারেন ।
ভোইগটান

1
সবেমাত্র এটি পেয়ে গেছে এটি আই 8 এ কাজ করবে না। আমার বিকল্প কি?
joedborg

@voigtan আমি কীভাবে এটি আমার জেএসে যুক্ত করব?
joedborg

5
আমি এটা করেছি, ধন্যবাদ। আইই একদিন আধুনিক সময়ের সাথে ধরা পড়বে!
joedborg

সামঞ্জস্যতা মোডে সাম্প্রতিক আইই
তেও

74

জন্য অ্যারের বস্তু ব্যবহারের mapসঙ্গে indexOf:

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.map(function (img) { return img.value; }).indexOf(200);

console.log(index);


আধুনিক ব্রাউজারগুলিতে আপনি এটি ব্যবহার করতে পারেন findIndex:

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.findIndex(img => img.value === 200);

console.log(index);

এর ES6 এর অংশ এবং ক্রোম, এফএফ, সাফারি এবং এজ দ্বারা সমর্থিত


1
নোট করুন যে ফাইন্ড ইন্ডেক্সটি আইই 11 তে প্রয়োগ করা হয়নি
বিন্ড্রিড

2
@ ব্র্যান্ড্রিড উত্তরে লেখা হয়েছে "দেখুন এর ES6 এর অংশ এবং এটি ক্রোম, এফএফ, সাফারি এবং (দুর্ভাগ্যক্রমে কেবল) আইই প্রান্ত দ্বারা সমর্থিত"
জাকেন হে’র

17

JQuery এর ফাংশন jQuery.inArray ব্যবহার করুন

jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )

সঠিক উত্তর হিসাবে চিহ্নিত কোডটি ব্যবহার করতে যাচ্ছিল তবে মনে হয় যে কোডটি IE এর সমস্ত সংস্করণে কাজ করবে না। এই উত্তর আই এর সমস্ত সংস্করণে কাজ করে তবে আমি কোডটি কিছুটা পরিবর্তন করেছি: var অ্যারেপজিশন = $ .আইআররে (মান, অ্যারে); পুরোপুরি কাজ করে
জেমস ব্ল্যাকবার্ন

6
jQuery ≠ জাভাস্ক্রিপ্ট
অ্যান্ড্রু

13

জাভাস্ক্রিপ্টে জটিল অ্যারেতে মান সূচক খুঁজে পাওয়ার আরও একটি উপায় এখানে। আশা করি আসলেই কাউকে সাহায্য করবেন। ধরে নেওয়া যাক আমাদের নীচে জাভাস্ক্রিপ্ট অ্যারে রয়েছে,

var studentsArray =
     [
    {
    "rollnumber": 1,
    "name": "dj",
    "subject": "physics"
   },
   {
   "rollnumber": 2,
  "name": "tanmay",
  "subject": "biology"
   },
  {
   "rollnumber": 3,
   "name": "amit",
   "subject": "chemistry"
   },
  ];

এখন যদি আমাদের প্রয়োজন হয় অ্যারেতে একটি নির্দিষ্ট বস্তু নির্বাচন করার জন্য। আসুন আমরা ধরে নিই যে আমরা তন্ময় নামের ছাত্রটির সূচকটি খুঁজতে চাই।

অ্যারে দিয়ে পুনরাবৃত্তি এবং প্রদত্ত কীতে মানটির তুলনা করে আমরা এটি করতে পারি।

function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {

    for (var i = 0; i < arraytosearch.length; i++) {

    if (arraytosearch[i][key] == valuetosearch) {
    return i;
    }
    }
    return null;
    }

আপনি নীচের মতো নির্দিষ্ট উপাদানের সূচক খুঁজতে ফাংশনটি ব্যবহার করতে পারেন,

var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);



6

Array.indexOfইন্টারনেট এক্সপ্লোরারের কয়েকটি সংস্করণে কাজ করে না - যদিও এটি করার অনেকগুলি বিকল্প উপায় রয়েছে ... এই প্রশ্নটি / উত্তর দেখুন: জাভাস্ক্রিপ্টে কোনও অ্যারে কোনও বিষয় অন্তর্ভুক্ত করেছে কিনা তা আমি কীভাবে পরীক্ষা করব?



আপনি যে পৃষ্ঠাটিতে লিঙ্ক করেছেন সিমন_উইভারটিতে জাভাস্ক্রিপ্ট ১.6 এবং তার বেশি ব্যবহার করে সমস্ত ব্রাউজারের জন্য একটি পলিফিল রয়েছে
মানসে

5

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

function getIndex(val) {
    for (var i = 0; i < imageList.length; i++) {
        if (imageList[i] === val) {
            return i;
        }
    }
}

var imageList = [100, 200, 300, 400, 500];
var index = getIndex(200);

5

কোনও ES6ফাংশন ব্যবহার করা সম্ভব Array.prototype.findIndex

এমডিএন বলেছেন :

findIndex()পদ্ধতির সূচক ফেরৎ অ্যারের মধ্যে প্রথম উপাদান মাফিক টেস্টিং ফাংশন প্রদান করা হয়েছে। অন্যথায় -1 ফেরত দেওয়া হয়।

var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));

// expected output: 1

বস্তুর সম্পত্তি অনুসারে একটি সূচক সন্ধান করুন।

অবজেক্ট প্রোপার্টি অনুসারে একটি সূচক খুঁজতে:

yourArray.findIndex(obj => obj['propertyName'] === yourValue)

উদাহরণস্বরূপ, এই জাতীয় একটি অ্যারে রয়েছে:

let someArray = [
    { property: 'OutDate' },
    { property: 'BeginDate'},
    { property: 'CarNumber' },
    { property: 'FirstName'}
];

তারপরে প্রয়োজনীয় সংস্থার একটি সূচক খুঁজতে কোডটি দেখতে দেখতে এমন দেখাচ্ছে:

let carIndex = someArray.findIndex( filterCarObj=> 
    filterCarObj['property'] === 'CarNumber');

0

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

প্রথমে উপাদানটি সূচকটি অনুসন্ধান করে এটি উপস্থিত কিনা তা পরীক্ষা করুন । যদি এটি বিদ্যমান থাকে তবে স্প্লাইস পদ্ধতিটি ব্যবহার করে এটি সূচকে সরিয়ে ফেলুন

elementPosition = array.indexOf(value);

if(elementPosition != -1) {
  array.splice(elementPosition, 1);
}

0

বহুমাত্রিক অ্যারেতে


রেফারেন্স অ্যারে:

var array = [
    { ID: '100', },
    { ID: '200', },
    { ID: '300', },
    { ID: '400', },
    { ID: '500', }
];

ব্যবহার filterএবং indexOf:

var in_array = array.filter(function(item) { 
    return item.ID == '200' // look for the item where ID is equal to value
});
var index = array.indexOf(in_array[0]);

অ্যারেতে প্রতিটি আইটেমটি ব্যবহার করে লুপিং indexOf:

for (var i = 0; i < array.length; i++) {
    var item= array[i];
    if (item.ID == '200') { 
        var index = array.indexOf(item);
    }
}

-1
// Instead Of 
var index = arr.indexOf(200)

// Use 
var index = arr.includes(200);

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


1
এ ছাড়াও শুধুমাত্র আপনি কহন যদি উপস্থিত থাকে সূচক / আইটেমটি পাবার পরিবর্তে, সামঞ্জস্য জ্ঞাত হতে (অর্থাত কোন আইই): caniuse.com/#search=includes
Moto

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