JavaScript-এ filter() এবং ক্লোজার ব্যবহার করে অ্যারের শুরুতে থাকা শূন্য (leading zeros) রিমুভ করা যায়, কিন্তু মাঝপথের জিরো রাখা থাকে।
কোড উদাহরণ
const removeLeadingZero = input =>
input.filter((lastValue => value => lastValue = lastValue || value)(false));
console.log(removeLeadingZero([10, 0, 12, 0, 0])); // [10, 0, 12, 0, 0]
console.log(removeLeadingZero([0, 0, 0, 0, 0, 0, 10, 12, 0])); // [10, 12, 0]
console.log(removeLeadingZero([12, 0, 0, 1, 0, 0])); // [12, 0, 0, 1, 0, 0]
চলানোর পদ্ধতি
- কোডটি
leadingZero.jsনামে সংরক্ষণ করুন। - টার্মিনালে চালান:
node leadingZero.js
আউটপুট
[ 10, 0, 12, 0, 0 ]
[ 10, 12, 0 ]
[ 12, 0, 0, 1, 0, 0 ]
কোড ব্যাখ্যা (ডিকোডেড)
// আসল লজিক বুঝতে সহজ ורژن:
function removeLeadingZeros(arr) {
let foundNonZero = false;
return arr.filter(value => {
if (!foundNonZero && value === 0) {
return false; // লিডিং জিরো - বাদ দাও
}
foundNonZero = true; // প্রথম নন-জিরো পাওয়া গেলে
return true; // বাকি সব রাখো
});
}
অন্যান্য পদ্ধতিগুলো
| পদ্ধতি | কোড | ব্যাখ্যা |
|---|---|---|
| findIndex | arr.slice(arr.findIndex(x => x !== 0)) | প্রথম নন-জিরোর ইনডেক্স থেকে স্লাইস |
| while লুপ | while(arr[0]===0) arr.shift() | মিউটেট করে (মূল অ্যারে বদলায়) |
| reduce | arr.reduce((a,v)=>a.length||v? [...a,v]:a, []) | ফাংশনাল পদ্ধতি |
স্ট্রিং-এর জন্য (নাম্বার স্ট্রিং)
const str = "00001234";
console.log(str.replace(/^0+/, '')); // "1234"
console.log(Number(str)); // 1234 (নাম্বারে রূপান্তর)
ব্যবহার ক্ষেত্র
- আইডি নরমালাইজেশন (০০০১২৩ → ১২৩)
- বাইনারি/হেক্স ডেটা প্রসেসিং
- ফাইন্যান্সিয়েল লেজার ক্লিনআপ