filter() मेथड से ऐरे के शुरुआत में आने वाले 0 मान हटाएं, लेकिन पहले गैर-शून्य मान के बाद आने वाले शून्य बरकरार रखें।
समस्या समझें
[0, 0, 0, 10, 12, 0] → [10, 12, 0] // शुरुआती 0 हटे, अंतिम 0 रखा
[10, 0, 12, 0, 0] → [10, 0, 12, 0, 0] // कोई शुरुआती 0 नहीं
[12, 0, 0, 1, 0, 0] → [12, 0, 0, 1, 0, 0] // कोई शुरुआती 0 नहीं
फंक्शन कार्यान्वयन
function removeLeadingZeros(arr) {
let foundNonZero = false;
return arr.filter(value => {
if (value !== 0) {
foundNonZero = true;
}
return foundNonZero || value !== 0;
});
}
// या संक्षिप्त रूप (क्लोजर के साथ)
const removeLeadingZero = input =>
input.filter((lastNonZero => value => lastNonZero = lastNonZero || value)(false));
// टेस्ट
console.log(removeLeadingZeros([10, 0, 12, 0, 0])); // [10, 0, 12, 0, 0]
console.log(removeLeadingZeros([0, 0, 0, 0, 0, 0, 10, 12, 0])); // [10, 12, 0]
console.log(removeLeadingZeros([12, 0, 0, 1, 0, 0])); // [12, 0, 0, 1, 0, 0]
console.log(removeLeadingZeros([0, 0, 0])); // []
स्पष्ट संस्करण (समझने में आसान)
function removeLeadingZerosClear(arr) {
// पहला गैर-शून्य इंडेक्स ढूंढें
const firstNonZeroIndex = arr.findIndex(v => v !== 0);
// यदि सभी शून्य हैं या ऐरे खाली है
if (firstNonZeroIndex === -1) return [];
// उस इंडेक्स से स्लाइस करें
return arr.slice(firstNonZeroIndex);
}
console.log(removeLeadingZerosClear([0, 0, 10, 12, 0])); // [10, 12, 0]
स्ट्रिंग्स के लिए (यदि ऐरे में स्ट्रिंग "0" हैं)
function removeLeadingZeroStrings(arr) {
let started = false;
return arr.filter(v => {
if (v !== "0" && v !== 0) started = true;
return started || v !== "0" && v !== 0;
});
}
console.log(removeLeadingZeroStrings(["0", "0", "5", "0", "3"])); // ["5", "0", "3"]
चलाने का तरीका
node remove-leading-zeros.js
आउटपुट
[ 10, 0, 12, 0, 0 ]
[ 10, 12, 0 ]
[ 12, 0, 0, 1, 0, 0 ]
महत्वपूर्ण अंतर
| ऑपरेशन | कोड | परिणाम |
|---|---|---|
| सभी 0 हटाएं | arr.filter(x => x !== 0) | [10, 12] |
| केवल अग्रणी 0 हटाएं | arr.slice(arr.findIndex(x => x !== 0)) | [10, 12, 0] |
| अंतिम 0 हटाएं | arr.reverse().slice(...).reverse() | [0, 0, 10, 12] |