কম্পিউটার

জাভাস্ক্রিপ্টে .sort() পদ্ধতির সমস্যা সমাধান করুন, শুধুমাত্র একটির পরিবর্তে দুটি অ্যারে সাজান


Array.prototype.sort() ফাংশনের একটি বৈশিষ্ট্য হল এটি একটি ইনপ্লেস সর্টিং অ্যালগরিদম, যার মানে এটি সাজানোর জন্য অ্যারের একটি নতুন কপি তৈরি করে না, এটি কোনো অতিরিক্ত স্থান ব্যবহার না করেই অ্যারেকে সাজায়, এটিকে আরও দক্ষ করে তোলে এবং পারফরম্যান্স। কিন্তু এই বৈশিষ্ট্য কখনও কখনও একটি বিশ্রী পরিস্থিতির দিকে নিয়ে যায়।

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

আমরা এরকম কিছু করতে পারি -

const names = ['Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj'];
let sortedNames = names;
sortedNames = sortedNames.sort();
console.log(names);
console.log(sortedNames);

কিন্তু আমরা যেমন জাভাস্ক্রিপ্টে জানি, অ্যারেগুলিও বস্তু এবং বস্তুগুলি রেফারেন্স দ্বারা অনুলিপি করা হয় মান দ্বারা নয়, তাই একটি অ্যারে সাজানোর ফলে উভয় অ্যারেকে সাজানো হয়, যা আমরা স্পষ্টতই চাই না৷

সমাধান

1. নতুন অ্যারে শুরু করার সময় slice() ব্যবহার করা হচ্ছে

উদাহরণ

const names = ['Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj'];
let sortedNames = names.slice();
sortedNames = sortedNames.sort();
console.log(names);
console.log(sortedNames);

স্লাইস() পদ্ধতিটি আসলে একটি অগভীর অনুলিপি প্রদান করে, এটির সাথে ব্যবহৃত অ্যারের একটি নতুন অ্যারেতে অনুলিপি করা হয়, যদি কোন যুক্তি প্রদান না করা হয় তবে এটি শুরু থেকে শেষ পর্যন্ত অনুলিপি করে৷

যদিও এই পদ্ধতিটি খুব কার্যকর নয় কারণ এতে একটি নতুন অ্যারে শুরু করা এবং শুধুমাত্র স্ট্রিং/সংখ্যার আক্ষরিক অ্যারের সাথে কার্যকর, দ্বিতীয় পদ্ধতিটি একটু বেশি দক্ষ এবং বস্তুর অ্যারেতেও ভাল কাজ করে৷

২. JSON.stringify() / JSON.parse() ব্যবহার করে

উদাহরণ

const names = ['Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj'];
let sortedNames = JSON.parse(JSON.stringify(names));
sortedNames = sortedNames.sort();
console.log(names);
console.log(sortedNames);

অ্যারেটিকে একটি JSON স্ট্রিংয়ে রূপান্তরিত করা এবং একটি অ্যারেতে ফিরে এমনভাবে কম্পাইলারকে রেফারেন্স দ্বারা টোনোট কপি করতে বাধ্য করে৷

উভয় পদ্ধতির আউটপুট কনসোলে −

একই হবে

আউটপুট

[ 'Rakesh', 'Mukesh', 'Ram', 'Anshul', 'Dheeraj' ]
[ 'Anshul', 'Dheeraj', 'Mukesh', 'Rakesh', 'Ram' ]

  1. জাভাস্ক্রিপ্ট অ্যারে থেকে() পদ্ধতি

  2. JavaScript Sort() পদ্ধতি

  3. আমরা কি দুটি অ্যারেকে একটি জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করতে পারি?

  4. জাভাস্ক্রিপ্ট ব্যবহার করে দুটি সাজানো অ্যারেকে এক সাজানো অ্যারেতে মার্জ করা