ruby - 数组过滤 Ruby
问题描述
一个问题要求打印数组中大于 100 的所有数字。当我运行此命令时:
array = [3, 123, 433, -77, 56, 200, 99, 101, 6]
index = 0
9.times do
if array[index] > 100 == 0
p array[index]
end
index = index + 1
end
数字 9 被打印出来。如果数字大于 100,我会输入适当的条件来获取打印机。任何人都可以帮忙吗?
解决方案
如果您知道使用正确的工具,这个问题实际上很容易解决:
array = [3,123,433,-77,56,200,99,101,6]
array.select { |n| n > 100 }.each do |n|
puts n
end
哪里select
可以帮助缩小数字列表。Ruby 的 Array 类有大量像这样的方法,它们可以快速轻松地完成各种与过滤和映射相关的事情。
您的代码中的9.times
部分与数组的实际长度是分离的,如果您添加/删除条目并且这两个条目不同步,这会导致很多错误。
尽可能使用数组迭代器,例如:
array = [3,123,433,-77,56,200,99,101,6]
array.each do |n|
if (n > 100)
puts n
end
end
推荐阅读
- google-cloud-platform - GCS存储桶更新频率,如何设置?
- java - 在 linux box 中运行 java 版本的速度很慢
- android - 只有 Crashlytics 数据会从 Fabric 迁移到 Firebase,不会迁移 Analytics 数据
- python - 此代码用于使用 python 返回 None 的 Web Scraping。为什么?任何帮助,将不胜感激
- laravel - 我的 laravel 项目,但有些数据在查询中没有声音
- linux - wc -w 在 echo 和 tr 命令中做了什么?
- wordpress - 无法在 Wordpress 中添加或编辑当前页面
- php - 我想直接从表(视图)将数据插入数据库,但是当我单击添加 btn 时,只有第一行或最后一行被插入
- javascript - 反应解析错误:使用反应路由器站点地图npm时出现意外错误'#'
- ios - 在发布 ipa 的前台未收到通知