我有一个这样的数组:
arr = [{id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
我需要检查是否有任何arr
对象具有 name Sam
。什么是最优雅的方式?我只能想到骑自行车each
。
我有一个这样的数组:
arr = [{id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
我需要检查是否有任何arr
对象具有 name Sam
。什么是最优雅的方式?我只能想到骑自行车each
。
我需要检查是否有任何 arr 对象的名称为 Sam
Enumerable#any?
是个好方法。
arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
arr.any? {|h| h[:name] == "Sam"}
# => true
现在,如果您还想查看哪个Array
对象中包含值Sam,您可以使用Enumerable#find
相同的方法:
arr.find {|h| h[:name] == "Sam"}
# => {:id=>2, :name=>"Sam"}
您还可以选择选择或计数方法
> arr = [{id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
> arr.select { | h | h[:name] == 'Sam' }
# => [{:id=>2, :name=>"Sam"}]
> arr.count { | h | h[:name] == 'Sam' }
# => 1
您可以使用Enumberable#find_all返回与约束匹配的所有对象
arr = [{:id=>1,:first_name=>'sam'},{:id=>2,:first_name=>'sam'},{:id=>3,:first_name=>'samanderson'},{:id=>4,:first_name=>'samuel'}]
arr.find_all{|obj| obj.first_name == 'sam'}
# => [{:id=>1,:first_name=>'sam'},{:id=>2,:first_name=>'sam'}]