শর্তের সাথে (অ্যারের পাশাপাশি পুনরাবৃত্তি না করে) কীভাবে আমি অবজেক্টের সূচক পেতে পারি?
আপনি পারবেন না, অ্যারে দিয়ে কোনও কিছু পুনরাবৃত্তি করতে হবে (কমপক্ষে একবার)।
যদি শর্তটি অনেক পরিবর্তিত হয়, তবে আপনাকে শর্তগুলির সাথে মেলে কিনা তা দেখতে আপনাকে লুপ করতে হবে এবং এতে থাকা বস্তুগুলি দেখতে হবে। তবে, ES5 বৈশিষ্ট্যযুক্ত সিস্টেমে (বা আপনি যদি একটি শিম ইনস্টল করেন) তবে সেই পুনরাবৃত্তিটি মোটামুটি সংক্ষিপ্তভাবে করা যেতে পারে:
var index;
yourArray.some(function(entry, i) {
if (entry.prop2 == "yutu") {
index = i;
return true;
}
});
এটি নতুন (ইশ) Array#some
ফাংশনটি ব্যবহার করে যা আপনার দেওয়া ফাংশনটি সত্য না হওয়া পর্যন্ত অ্যারেতে প্রবেশের মাধ্যমে লুপ করে। আমি যে ফাংশনটি দিয়েছি তা মেলানো প্রবেশের সূচকটি সংরক্ষণ করে, তারপরে true
পুনরাবৃত্তি থামাতে ফিরে আসে ।
অথবা অবশ্যই, কেবল একটি for
লুপ ব্যবহার করুন । আপনার বিভিন্ন পুনরাবৃত্তির বিকল্পগুলি এই অন্যান্য উত্তরে কভার করা আছে ।
তবে আপনি যদি এই অনুসন্ধানের জন্য সর্বদা একই সম্পত্তি ব্যবহার করতে যাচ্ছেন এবং যদি সম্পত্তি মানগুলি অনন্য হয় তবে আপনি কেবল একবার লুপ করতে পারেন এবং সেগুলি মানচিত্রের জন্য একটি অবজেক্ট তৈরি করতে পারেন:
var prop2map = {};
yourArray.forEach(function(entry) {
prop2map[entry.prop2] = entry;
});
(অথবা, আবার আপনি for
লুপ বা আপনার অন্য কোনও বিকল্প ব্যবহার করতে পারেন ))
তারপরে আপনার যদি প্রবেশের সন্ধানের প্রয়োজন হয় তবে আপনি এটি prop2 = "yutu"
করতে পারেন:
var entry = prop2map["yutu"];
আমি এটিকে "ক্রস-ইনডেক্সিং" অ্যারে বলি। স্বাভাবিকভাবেই, আপনি যদি এন্ট্রিগুলি সরিয়ে বা যোগ করেন (বা তাদের prop2
মানগুলি পরিবর্তন করেন ), আপনার ম্যাপিং অবজেক্টটিও আপডেট করতে হবে।
0
?) উভয় সমাধান প্রয়োজনের তুলনায় আরও বেশি পুনরাবৃত্তি করে, যা অ্যারে বড় হলে আদর্শের চেয়ে কম (যদিও এর পরিমাণ এত বড় হ'ল মানুষের খেয়াল থাকে কম, যদি না লক্কুল অনেক কিছু ঘটে থাকে )।