কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে ডেসিমাল পয়েন্ট যুক্ত স্ট্রিং সর্টিং


সমস্যা বিবরণ

ডেসিমাল পয়েন্ট যুক্ত স্ট্রিং অ্যারে দেওয়া আছে (যেমন: '.0', '.1', '.2.1')। মানুষের দৃষ্টিতে লজিক্যাল অর্ডারে সর্ট করতে হবে।

ইনপুট: ['.0', '.1', '.2', '.4', '.2.1', '.3', '.4.1', '.5', '.5.1.5']

আউটপুট: ['.0', '.1', '.2', '.2.1', '.3', '.4', '.4.1', '.5', '.5.1.5']

সমাধান

const arr = ['.0', '.1', '.2', '.4', '.2.1', '.3', '.4.1', '.5', '.5.1.5'];

const compare = (a, b) => {
  if (a === b) return 0;
  const aArr = a.split("."), bArr = b.split(".");
  for (let i = 0; i < Math.min(aArr.length, bArr.length); i++) {
    if (parseInt(aArr[i]) < parseInt(bArr[i])) return -1;
    if (parseInt(aArr[i]) > parseInt(bArr[i])) return 1;
  }
  if (aArr.length < bArr.length) return -1;
  if (aArr.length > bArr.length) return 1;
  return 0;
};

arr.sort(compare);
console.log(arr);

আউটপুট

[ '.0', '.1', '.2', '.2.1', '.3', '.4', '.4.1', '.5', '.5.1.5' ]

ব্যাখ্যা

  • split(".") দিয়ে প্রতিটি অংশ আলাদা করা।
  • প্রতিটি অংশকে parseInt দিয়ে নম্বরে রূপান্তর করে তুলনা।
  • সমান অংশ থাকলে ছোট লেন্থ वाला আগে আসবে।
  • ভার্সন নম্বর সর্টিং (semver) এর জন্য আদর্শ।
  1. জাভাস্ক্রিপ্টে ইনহেরিট্যান্স উদাহরণসহ

  2. জাভাস্ক্রিপ্টে টেমপ্লেট স্ট্রিংস

  3. জাভাস্ক্রিপ্টে একসেন্টযুক্ত ক্যারেক্টরের স্ট্রিং সর্ট করা

  4. জাভাস্ক্রিপ্টে নেস্টেড টেমপ্লেট স্ট্রিং