我有一個非常簡單的問題: 如何通過數組中的值刪除第一個元素。 例如:通過ruby中的值刪除一個數組元素
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]
我沒有找到類似的話,任何人都可以幫助我嗎?
在此先感謝
我有一個非常簡單的問題: 如何通過數組中的值刪除第一個元素。 例如:通過ruby中的值刪除一個數組元素
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]
我沒有找到類似的話,任何人都可以幫助我嗎?
在此先感謝
傳遞的Array#find_index
結果爲Array#delete_at
:
>> 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]
您還可以使用:-
操作員從數組中刪除所需的元素,例如:
$> [1, 2, 3, '4', 'foo'] - ['foo']
$> [1, 2, 3, '4']
希望這有助於。
不幸的是,這會從數組中刪除'foo'的所有實例 –
'x = [1,1]; x - [1]#=> []'。這並不回答這個問題,即明確*「按值**刪除** ONE **數組元素」*。 –
你應該檢查'find_index'參數是否包含在數組中,否則'delete_at'因爲它的參數是'nil'會產生'TypeError'。 – toro2k
@ toro2k確實。上面添加的替代方法避免了TypeError –
更緊湊的方式可以是'arr.delete_at(arr.index(3)|| arr.size)'。 – toro2k