কম্পিউটার

জাভাস্ক্রিপ্টে মিশ্র সংখ্যাসূচক/আলফানিউমেরিক অ্যারে কীভাবে সাজানো যায়


ধরুন আমাদের কাছে এইরকম আলফানিউমেরিক স্ট্রিংগুলির একটি অ্যারে আছে −

const arr = ['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3'];

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যেটি একটি অ্যারেতে একটি এবং একমাত্র আর্গুমেন্ট।

এবং ফাংশন এই অ্যারে ইনপ্লেস −

সাজাতে হবে
  • যে স্ট্রিংগুলিতে শুধুমাত্র সংখ্যা রয়েছে তা প্রথমে ক্রমবর্ধমান ক্রমে সাজানো উচিত।
  • বর্ণমালা এবং সংখ্যার সংমিশ্রণ সম্বলিত স্ট্রিংগুলি প্রথমে বর্ণমালা অনুসারে এবং তারপর সংখ্যা অনুসারে ক্রমবর্ধমান ক্রমে সাজাতে হবে।

অতএব, আউটপুট −

এর মত হওয়া উচিত
const output = ['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3'];

উদাহরণ

const arr = ['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3'];
const alphaNumericSort = (arr = []) => {
   const sorter = (a, b) => {
      const isNumber = (v) => (+v).toString() === v;
      const aPart = a.match(/\d+|\D+/g);
      const bPart = b.match(/\d+|\D+/g);
      let i = 0; let len = Math.min(aPart.length, bPart.length);
      while (i < len && aPart[i] === bPart[i]) { i++; };
         if (i === len) {
            return aPart.length - bPart.length;
      };
      if (isNumber(aPart[i]) && isNumber(bPart[i])) {
         return aPart[i] - bPart[i];
      };
      return aPart[i].localeCompare(bPart[i]); };
      arr.sort(sorter);
};
alphaNumericSort(arr);
console.log(arr);

আউটপুট

এবং কনসোলে আউটপুট হবে −

[
   '1', '2', 'A1',
   'A3', 'A3A', 'A3B',
   'A4', 'A10', 'A11',
   'A12', 'B2', 'B10',
   'F1', 'F3'
]

  1. জাভাস্ক্রিপ্টে সাংখ্যিক সাজানোর কাজ কিভাবে করবেন?

  2. জাভাস্ক্রিপ্টে মার্জ সর্ট কিভাবে বাস্তবায়ন করবেন?

  3. কিভাবে জাভাস্ক্রিপ্টে সন্নিবেশ সাজানোর বাস্তবায়ন করবেন?

  4. জাভাস্ক্রিপ্টে Array.prototype.sort()।