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

জাভাস্ক্রিপ্টে নেস্টেড স্ট্রিং থেকে নম্বর যোগ করে সর্বোচ্চ সমষ্টি বালা ক্রেডিট কার্ড খুঁজে বের করা


সমস্যা বিবরণ

ক্রেডিট কার্ড নম্বরের অ্যারে দেওয়া আছে (ড্যাশ দিয়ে সেপারেটেড)। প্রতিটি কার্ডের ডিজিট সমষ্টি বের করে সর্বোচ্চ সমষ্টি والা কার্ড রিটার্ন করতে হবে। টাই হলে লাস্টটি।

সমাধান

const arr = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260'];

const findGreatestNumber = (arr) => {
  let n, i = 0, sums;
  sums = [];
  while (i < arr.length) {
    sums.push(sum(arr[i]));
    i++;
  }
  n = sums.lastIndexOf(Math.max.apply(null, sums));
  return arr[n];
};

const sum = (num) => {
  let i, integers, res;
  integers = num.split(/[-]+/g);
  i = 0;
  res = 0;
  while (i < integers.length) {
    res += Number(integers[i]);
    i++;
  }
  return res;
};

console.log(findGreatestNumber(arr));

আউটপুট

4252-278893-7978

ব্যাখ্যা

  • split(/[-]+/g) দিয়ে ড্যাশ দিয়ে স্ট্রিং স্প্লিট।
  • প্রতিটি অংশ Number() দিয়ে কনভার্ট করে যোগ।
  • lastIndexOf(Math.max(...)) দিয়ে টাই হলে লাস্ট ইনডেক্স পাওয়া যায়।
  1. জাভাস্ক্রিপ্ট Array.from() মেথড

  2. জাভাস্ক্রিপ্ট Array.from() মেথড

  3. জাভাস্ক্রিপ্টে অ্যারে স্ট্রিং থেকে কনsekutিভ ডুপ্লিকেট ক্যারেক্টার রিমুভ করা

  4. জাভাস্ক্রিপ্টে স্ট্রিং অ্যারে থেকে কমেন্ট সরানো