ভূমিকা
এই আর্টিকেলে একটি ফাংশন লেখা হয়েছে যা একটি সংখ্যা অ্যারে নেয় এবং প্রতিটি সংলগ্ন (consecutive) দুটি এলিমেন্টের পরম পার্থক্য (absolute difference) বের করে একটি নতুন অ্যারে রিটার্ন করে।
সম্পূর্ণ কোড
var arr = [23, 53, 66, 11, 67];
const createDifference = (arr) => {
const differenceArray = [];
for (let i = 1; i < arr.length; i++) {
differenceArray.push(Math.abs(arr[i] - arr[i - 1]));
}
return differenceArray;
};
console.log(createDifference(arr)); // [30, 13, 55, 56]
কোড ব্যাখ্যা
- লুপ শুরু: `i = 1` থেকে (দ্বিতীয় এলিমেন্ট) শুরু করে
- পার্থক্য বের করা: `arr[i] - arr[i-1]` - বর্তমান এবং পূর্বের এলিমেন্টের পার্থক্য
- পরম মান: `Math.abs()` - নেগেটিভ পার্থক্যকে পজিটিভে রূপান্তর
- পুশ: ফলাফল `differenceArray`-তে যোগ করা
গণনা প্রক্রিয়া
| i | arr[i] | arr[i-1] | পার্থক্য | পরম পার্থক্য |
|---|---|---|---|---|
| 1 | 53 | 23 | 30 | 30 |
| 2 | 66 | 53 | 13 | 13 |
| 3 | 11 | 66 | -55 | 55 |
| 4 | 67 | 11 | 56 | 56 |
আউটপুট
[30, 13, 55, 56]
বিকল্প পদ্ধতিগুলো
১. Map মেথড (ফাংশনাল)
const createDifference = arr =>
arr.slice(1).map((val, i) => Math.abs(val - arr[i]));
২. Reduce মেথড
const createDifference = arr =>
arr.reduce((acc, val, i) => {
if (i > 0) acc.push(Math.abs(val - arr[i-1]));
return acc;
}, []);
৩. ES6 স্ট্রাকচারিং (সংক্ষিপ্ত)
const diff = arr.slice(1).map((v, i) => Math.abs(v - arr[i]));
ব্যবহারিক অ্যাপ্লিকেশন
- স্টক প্রাইস অ্যানালাইসিস: দিনে দিনে মূল্য পরিবর্তন
- সেন্সর ডেটা: তাপমাত্রা, প্রেসার পরিবর্তন ট্র্যাক
- সিগন্যাল প্রসেসিং: ডিজিটাল সিগন্যালে ডেরিভেটিভ
- অ্যানোমালি ডিটেকশন: হঠাত বড় পরিবর্তন শনাক্ত করা
এজ কেস হ্যান্ডলিং
const createDifferenceSafe = (arr) => {
if (!Array.isArray(arr) || arr.length < 2) return [];
return arr.slice(1).map((val, i) => Math.abs(val - arr[i]));
};
console.log(createDifferenceSafe([5])); // []
console.log(createDifferenceSafe([])); // []
console.log(createDifferenceSafe(null)); // []
সারাংশ
সংলগ্ন এলিমেন্টের পার্থক্য বের করা একটি সাধারণ অ্যারে ম্যানিপুলেশন টাস্ক। `slice(1).map()` পদ্ধতিটি সবচেয়ে ক্লিন এবং ফাংশনাল। `Math.abs()` নিশ্চিত করে যে ফলাফল সবসময় পজিটিভ থাকে।