Array Length और Elements हटाना
In this page:
${#array_name[@]}
unset 'array_name[index]'
unset array_name
Current Length Pana
${#arr[@]} हमेशा array में currently stored elements की actual संख्या reflect करता है, जो sparse arrays के लिए याद रखना ज़रूरी है जहां highest index element count से ज़्यादा हो सकता है।
Looping या input validate करने से पहले array की size check करने का यह standard तरीका है।
उदाहरण: Getting the Current Length
#!/bin/bash
queue=(a b c d)
echo "Queue length: ${#queue[@]}"
Login to try C/C++/Java/PHP code in the editor
एक Single Element हटाना
unset arr[idx] उस specific index पर element delete करता है, लेकिन यह बाद के elements को shift करके gap बंद करने के बजाय वहां एक gap छोड़ देता है। इसका मतलब है array sparse बन जाता है और ${#arr[@]} exactly एक से घट जाता है।
उदाहरण: Removing a Single Element
#!/bin/bash
fruits=(apple banana cherry date)
unset 'fruits[1]'
echo "After removing index 1: ${fruits[@]}"
echo "Remaining count: ${#fruits[@]}"
for i in "${!fruits[@]}"; do
echo " index $i -> ${fruits[i]}"
done
Login to try C/C++/Java/PHP code in the editor
पूरी Array हटाना
unset arr (बिना index के) पूरी array delete करता है, हर element और variable को खुद भी, जैसे यह कभी declare ही नहीं हुआ था। यह arr=() set करने से अलग है, जो array को empty करता है लेकिन इसे एक (empty) array के रूप में declared छोड़ देता है।
उदाहरण: Removing the Entire Array
#!/bin/bash
temp_list=(x y z)
echo "Before: ${temp_list[@]}"
unset temp_list
echo "After unset, element count: ${#temp_list[@]}"
Login to try C/C++/Java/PHP code in the editor
एक Sparse Array को Compact करना
एक array को खुद को arr=("${arr[@]}") से reassign करना इसे सिर्फ इसके currently-existing elements से rebuild करता है, किसी भी gaps को discard करते हुए और सब कुछ index 0 से फिर से number करते हुए।
Middle से elements हटाने के बाद एक array को compact करने का यह standard trick है।
उदाहरण: Compacting a Sparse Array
#!/bin/bash
colors=(red green blue yellow)
unset 'colors[1]'
echo "Sparse: indices are ${!colors[@]}"
colors=("${colors[@]}")
echo "Compacted: indices are ${!colors[@]}, values are ${colors[@]}"
Login to try C/C++/Java/PHP code in the editor
- यह मान लेना कि
unset arr[idx]gap भरने के लिए बाद के elements को shift down करता है; यह नहीं करता -- यह उस index पर एक hole छोड़ देता है, array को renumber करने के बजाय sparse बनाते हुए। unset arr[idx](एक element हटाता है) कोunset arr(पूरी array और इसके सभी elements हटाता है) के साथ confuse करना।- यह उम्मीद करना कि
${#arr[@]}highest index plus one reflect करे; एक sparse array के लिए, यह actually present elements की संख्या reflect करता है, जो (highest index + 1) से कम हो सकती है।
${#arr[@]}array में actually present elements का current count देता है।unset arr[idx]सिर्फ वह एक element हटाता है, subsequent elements को shift down करने के बजाय एक gap छोड़ते हुए।unset arr(बिना index) पूरी array और इसके अंदर सब कुछ हटाता है।- एक sparse array को वाकई compact करने के लिए (gaps हटाएं और renumber करें), इसे
arr=("${arr[@]}")से reassign करें, जो इसे एक fresh, densely-indexed array के रूप में rebuild करता है।
Chapter Quiz — Complete all 10 topics to unlock
0/10 topics done
Complete these topics first: