Array.delete_if
Signature
array.delete_if {|element| block} #=> array
array.delete_if {|element| block} iterates over all elements ofarray and deletes an element from array if block returns true for that
element.
Examples
a = [1,2,3,4,5,6,7,8,9,10] #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.delete_if {|n| n % 2 == 0} #=> [1, 3, 5, 7, 9]
a #=> [1, 3, 5, 7, 9]
The following is another usage example.
#!/usr/bin/env ruby
#
# A contrived example of using Array.delete_if
#
$VERBOSE = true
require 'pp'
# Member of an organization.
class Member
attr_accessor :name
attr_accessor :current
def current?
@current
end
end
# Raw member data
members_data = [
['Bob', true],
['Fred', false],
['Bill', false],
['Alice', true]
]
# Create the members based on the raw member data
members = members_data.map do |entry|
member = Member.new
member.name = entry[0]
member.current = entry[1]
member
end
puts 'Before purging of non-current members...'
pp members
puts "\n"
# Purge non-current members.
members.delete_if {|member| !member.current?}
puts 'After purging of non-current members...'
pp members
Produces...
Before purging of non-current members...
[#<Member:0x1003a03d0 @current=true, @name="Bob">,
#<Member:0x1003a0420 @current=false, @name="Fred">,
#<Member:0x1003a03f8 @current=false, @name="Bill">,
#<Member:0x1003a03a8 @current=true, @name="Alice">]
After purging of non-current members...
[#<Member:0x1003a03d0 @current=true, @name="Bob">,
#<Member:0x1003a03a8 @current=true, @name="Alice">]
Documentation Reference
Ruby version 1.8.6
- Log in to post comments
