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

জাভাস্ক্রিপ্টে সর্টেড অ্যারেতে আইটেমগুলোর মধ্যকার দূরত্ব বের করা


সমস্যা বিবরণ

সর্টেড (আরোহী) নাম্বার অ্যারে দেওয়া আছে। প্রতিটি এলিমেন্টের জন্য পরবর্তী সব এলিমেন্টের সাথে দূরত্ব (ডিফারেন্স) বের করে সাব-অ্যারে বানাতে হবে। লাস্ট এলিমেন্ট বাদ দেওয়া হবে।

ইনপুট: [2, 5, 7, 8, 9]

আউটপুট: [[3,5,6,7], [2,3,4], [1,2], [1]]

সমাধান

const arr = [2, 5, 7, 8, 9];

const distanceBetween = (arr, r = []) => {
  if (r.length <= arr.length - 2) {
    let temp = [];
    let b = arr[r.length];
    arr.forEach(e => temp.push(e - b));
    r.push(temp.filter(e => e > 0));
    return distanceBetween(arr, r);
  } else {
    return r;
  }
};

console.log(distanceBetween(arr));

আউটপুট

[ [ 3, 5, 6, 7 ], [ 2, 3, 4 ], [ 1, 2 ], [ 1 ] ]

ব্যাখ্যা

  • রিকার্সিভ ফাংশন: r.length ট্র্যাক করে কোন ইন্ডেক্সে আছি।
  • b = arr[r.length] বেস এলিমেন্ট।
  • arr.forEach দিয়ে সব এলিমেন্ট থেকে b বিয়োগ করা।
  • filter(e => e > 0) দিয়ে শুধু পজেটিভ ডিফারেন্স (পরে এলিমেন্টগুলো) রাখা।

ইটেরেটিভ ভার্সন (বেশি রিডেবল)

const distanceBetweenIter = arr => 
  arr.slice(0, -1).map((val, i) => 
    arr.slice(i + 1).map(v => v - val)
  );
  1. জাভাস্ক্রিপ্টে TypedArray.find() ফাংশন

  2. জাভাস্ক্রিপ্ট Array.find() ফাংশন

  3. জাভাস্ক্রিপ্টে Array.prototype.find() মেথড

  4. জাভাস্ক্রিপ্ট অ্যারেতে এলিমেন্ট সার্চ করা