如何使用 if 方法添加到数组
How to add to an array with an if method
我有一个这样的数字数组...
a= [28, 67, 20, 38, 4, 39, 14, 84, 20, 64, 7, 24, 17, 8, 7, 6, 15, 52, 4, 26]
我需要检查每个数字是否大于 30,如果是,那么我想计算该数字并计算有多少数字大于 30。我有这个,但它不起作用,所以远
def late_items
total_late = []
if a.map { |i| i > 30}
total_late << i
end
self.late_items = total_late.count
end
您可以使用 select
获取所有大于 30 的元素。
a.select{|b| b > 30}.count
# => 6
count
方法可以传递一个块来指定应该计算哪种元素。块 returns false
或 nil
的元素将被忽略。
在您的情况下,可以归结为:
array.count { |element| element > 30 }
在Ruby中就简单多了:
a = [28, 67, 20, 38, 4, 39, 14, 84, 20, 64, 7, 24, 17, 8, 7, 6, 15, 52, 4, 26]
a.select{ |e| e > 30 }
您也可以查看inject
方法。在里面你可以轻松得到大于30的数字的总和:
a.inject(0) { |sum, n| n > 30 ? sum += n : sum }
或者,如果您有一个大于 30 的数字数组,您可以使用 reduce
来汇总其项目。在您的 a
变量中,它看起来像:
a.select{ |n| n > 30 }.reduce(&:+)
看来你还想要每个超过 30 的项目的索引,如果是这样的话,这个就可以了:
a= [28, 67, 20, 38, 4, 39, 14, 84, 20, 64, 7, 24, 17, 8, 7, 6, 15, 52, 4, 26]
count = 0
pos = []
a.each_with_index do |num, i|
if num > 30
count += 1
pos << i
end
end
puts count
print pos
#=> 6 [1,3,5,7,8,17]
我有一个这样的数字数组...
a= [28, 67, 20, 38, 4, 39, 14, 84, 20, 64, 7, 24, 17, 8, 7, 6, 15, 52, 4, 26]
我需要检查每个数字是否大于 30,如果是,那么我想计算该数字并计算有多少数字大于 30。我有这个,但它不起作用,所以远
def late_items
total_late = []
if a.map { |i| i > 30}
total_late << i
end
self.late_items = total_late.count
end
您可以使用 select
获取所有大于 30 的元素。
a.select{|b| b > 30}.count
# => 6
count
方法可以传递一个块来指定应该计算哪种元素。块 returns false
或 nil
的元素将被忽略。
在您的情况下,可以归结为:
array.count { |element| element > 30 }
在Ruby中就简单多了:
a = [28, 67, 20, 38, 4, 39, 14, 84, 20, 64, 7, 24, 17, 8, 7, 6, 15, 52, 4, 26]
a.select{ |e| e > 30 }
您也可以查看inject
方法。在里面你可以轻松得到大于30的数字的总和:
a.inject(0) { |sum, n| n > 30 ? sum += n : sum }
或者,如果您有一个大于 30 的数字数组,您可以使用 reduce
来汇总其项目。在您的 a
变量中,它看起来像:
a.select{ |n| n > 30 }.reduce(&:+)
看来你还想要每个超过 30 的项目的索引,如果是这样的话,这个就可以了:
a= [28, 67, 20, 38, 4, 39, 14, 84, 20, 64, 7, 24, 17, 8, 7, 6, 15, 52, 4, 26]
count = 0
pos = []
a.each_with_index do |num, i|
if num > 30
count += 1
pos << i
end
end
puts count
print pos
#=> 6 [1,3,5,7,8,17]