2013-07-27 3 views
6

में मान द्वारा एक सरणी तत्व हटाएं मेरे पास वास्तव में एक सरल सवाल है: मैं किसी सरणी में किसी मान द्वारा पहले तत्व को कैसे हटा सकता हूं। उदाहरण के लिए:रूबी

arr = [ 1, 1, 2, 2, 3, 3, 4, 5 ] 
#something like: 
arr.delete_first(3) 
#I would like a result like => [ 1, 1, 2, 2, 3, 4, 5] 

मैं इसी तरह कुछ भी नहीं मिला, किसी को भी मेरी मदद कर सकता है?

अग्रिम

उत्तर

16

धन्यवाद Array#delete_at में Array#find_index का परिणाम दर्रा:

>> arr.delete_at(arr.find_index(3)) 

>> arr 
=> [1, 1, 2, 2, 3, 4, 5] 

find_index() पहला तत्व है कि इसके तर्क से मेल खाता है की सरणी सूचकांक वापस आ जाएगी। delete_at() निर्दिष्ट सूचकांक पर एक ऐरे से तत्व हटा देता है।

delete_at() एक TypeError को ऊपर उठाने अगर सूचकांक नहीं मिला है, तो आप एक चर के लिए find_index() का परिणाम आवंटित और delete_at() में कि चर का उपयोग करता है, तो यह nil नहीं है करने के लिए एक && निर्माण का उपयोग कर सकते रोकने के लिए। && का दायां तरफ निष्पादित नहीं होगा यदि बाईं तरफ false या nil है।

>> (i = arr.find_index(3)) && arr.delete_at(i) 
=> 3 
>> (i = arr.find_index(6)) && arr.delete_at(i) 
=> nil 
>> arr 
=> [1, 1, 2, 2, 3, 4, 5] 
+0

आपको यह जांचना चाहिए कि 'find_index' का तर्क सरणी में शामिल है, अन्यथा 'delete_at'' टाइपरर' उठाता है क्योंकि इसका तर्क' शून्य 'है। – toro2k

+0

@ toro2k वास्तव में। वैकल्पिक जोड़ा गया है जो TypeError –

+2

से बचाता है एक अधिक कॉम्पैक्ट तरीका 'arr.delete_at (arr.index (3) || arr.size) हो सकता है। – toro2k

-8

तुम भी :- ऑपरेटर का उपयोग सरणी से वांछित तत्व निकाल, उदा .:

$> [1, 2, 3, '4', 'foo'] - ['foo'] 
$> [1, 2, 3, '4'] 

आशा इस मदद करता है करने के लिए कर सकते हैं।

+0

दुख की बात यह है कि यह –

+0

'x = [1, 1] से 'foo' के सभी उदाहरणों को हटा देगा; एक्स - [1] # => [] '। यह प्रश्न का उत्तर नहीं देता है, जो स्पष्ट रूप से * "** ** ** ** मूल्य से तत्व को हटाएं" * था। –