প্রতি শেষ পুনরাবৃত্তি জন্য ধরা


95
arr = [1,2,3];
arr.forEach(function(i){
// last iteration
});

লুপ শেষ হয়ে গেলে কীভাবে ধরব? আমি করতে পারি if(i == 3)তবে আমি জানি না যে আমার অ্যারের সংখ্যাটি কী।

উত্তর:


173

ES6 + এর জন্য আপডেট উত্তর এখানে


arr = [1, 2, 3]; 

arr.forEach(function(i, idx, array){
   if (idx === array.length - 1){ 
       console.log("Last callback call at index " + idx + " with value " + i ); 
   }
});

আউটপুট হবে:

Last callback call at index 2 with value 3

এটি যেভাবে কাজ করে তা arr.lengthঅ্যারের বর্তমান সূচকের বিরুদ্ধে পরীক্ষা করছে, কলব্যাক ফাংশনে চলে গেছে ।


আমি এর পিছনে যেতে পারি, এটি কিছুটা স্পষ্ট, যদিও আমি নিশ্চিত নই যে এটি আসলে অন্য কোনও কিছুর গ্যারান্টি দেয়, যেহেতু arrপ্রতিটি কলব্যাকের জন্য ইতিমধ্যে বন্ধ করার সুযোগ রয়েছে
jdphenix

এবং অবিলম্বে পোস্ট করার পরে আমি বুঝতে পারি যে একটি স্পষ্ট ব্যবহারের কেস - যদি আপনি অন্য কোথাও কলব্যাকটি সংজ্ঞায়িত করেন। বিব্রত মুখ .োকান।
jdphenix

কোন বিব্রত মুখ প্রয়োজন। আমার সেই সঠিক প্রশ্নটি ছিল (যখন আপনি এ্যার করবেন তখন আপনার অ্যারের দরকার কেন) তবে আপনার পর্যবেক্ষণ / প্রশ্নটি এটিকে পরিষ্কার করেছে, তাই ধন্যবাদ। যদিও আপনি আশ্চর্যজনক যে আপনি নিজেই এই উত্তরটি লিখেছিলেন এবং আপনি নিজের উত্তরটি নিয়ে প্রশ্ন করেছেন? আপনি যে প্রতিক্রিয়া জানিয়েছিলেন এমন কোনও মন্তব্য কি এখন মুছে ফেলা হয়েছে?
redfox05

@ রাসেল এটি সঠিক, একটি আলোচনা আছে (যা) তখন থেকে আংশিকভাবে সরিয়ে দেওয়া হয়েছে।
jdphenix

34

2018 ES6 + উত্তর উত্তর :

    const arr = [1, 2, 3];

    arr.forEach((val, key, arr) => {
      if (Object.is(arr.length - 1, key)) {
        // execute last item logic
        console.log(`Last callback call at index ${key} with value ${val}` ); 
      }
    });

আমি আজকে এটি আরও ভাল পছন্দ করি - যদিও আমি ২০১৫ সালে স্বচ্ছলভাবে স্বীকার করে নিলাম যে স্পষ্টতই বিশ্বব্যাপী ঘোষণা করা একটি খারাপ ধারণা ছিল।
jdphenix

4
ভুলে যাবেন না, এই দৃ const়তা এবং আসুন বিশ্বব্যাপী ঘোষণা নয়, কারণ এগুলি কেবল তাত্ক্ষণিক সুযোগে বৈধ ... বৈকল্পিকের পরিবর্তে, যা পদ্ধতির শীর্ষে উঠানো হয়।
স্টার্লিং বোর্ন

হুহ ... পূর্ববর্তী সংস্করণটি আরও সংক্ষিপ্ত এবং পাঠযোগ্য। এই অবজেক্ট স্টাফ একটি জগাখিচুড়ি।
giorgio79

4
এটি জর্জিও 79৯ বুঝতে না পারলে কেবলই গোলমাল। আপনার প্রাথমিক তুলনা বনাম == বা === হিসাবে অবজেক্ট.ইস () ব্যবহার করার অসংখ্য সুবিধা রয়েছে। আপনার মন্তব্যের জন্য ধন্যবাদ, তবে!
স্টার্লিং বোর্ন

4
@ স্টার্লিংবর্ন আপনি কি আরও ব্যাখ্যা করতে পারেন যে এই সুবিধাগুলি কী? (উত্তরে এটি অন্তর্ভুক্ত করা ভাল হবে)
লুডোভিচো

4
const arr= [1, 2, 3]
arr.forEach(function(element){
 if(arr[arr.length-1] === element){
  console.log("Last Element")
 }
})

4
সবসময় কাজ করতে পারে না। let o = { val:"ue" } ; let arr = [ o, 1, o ]; ...দুর্ভাগ্যক্রমে প্রথম পুনরাবৃত্তিটি হবেarr[arr.length-1] === element
e2-e4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.