0Pricing
Ruby Academy · 课时

map、select、reject

转换与筛选

map、select、reject 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。

使用 map 进行转换

map 会对每个元素运行代码块,从而创建一个新数组。原数组不会改变。

nums = [1, 2, 3]
doubled = nums.map { |n| n * 2 }
puts doubled.inspect
puts nums.inspect

对字符串使用 map

map 可以转换任何类型的值,例如将单词转换为大写。

words = ["red", "green"]
puts words.map { |w| w.upcase }.inspect

符号快捷方式

如果代码块只调用一个方法,可以使用 &:method 作为快捷方式。

words = ["a", "b", "c"]
puts words.map(&:upcase).inspect

带索引使用 map

如果还需要位置,可以链式调用 with_index。

letters = %w[a b c]
result = letters.map.with_index { |l, i| "#{i}:#{l}" }
puts result.inspect

使用 select 进行筛选

select(别名为 filter)只保留代码块结果为真的元素。

nums = [1, 2, 3, 4, 5, 6]
evens = nums.select { |n| n.even? }
puts evens.inspect

筛选字符串

select 可以处理任何条件,例如只保留较长的单词。

words = ["hi", "hello", "hey", "welcome"]
puts words.select { |w| w.length > 3 }.inspect

使用 reject 进行移除

reject 与 select 的作用相反。它会移除代码块结果为真的元素。

nums = [1, 2, 3, 4]
puts nums.reject { |n| n.even? }.inspect

链式调用 map 和 select

由于每个方法都会返回一个新数组,因此可以将多个方法链接成一个处理流程。

nums = [1, 2, 3, 4, 5]
result = nums.select { |n| n.odd? }.map { |n| n * 10 }
puts result.inspect

同时筛选和转换

filter_map 会在一次遍历中结合筛选和转换:它会保留代码块返回的非假值。

nums = [1, 2, 3, 4]
result = nums.filter_map { |n| n * 2 if n.even? }
puts result.inspect

映射并展平

flat_map 会先进行映射,然后将嵌套数组展平一层。

pairs = [[1, 2], [3, 4]]
puts pairs.flat_map { |p| p }.inspect

分区

partition 会将集合拆分为两个数组:匹配项和不匹配项。

nums = [1, 2, 3, 4, 5]
evens, odds = nums.partition { |n| n.even? }
puts evens.inspect
puts odds.inspect

快速检查

检查您对转换和筛选的理解。

回顾

您已经掌握了转换和筛选:

  • 使用 map 进行转换,以及使用 &:method 快捷方式
  • select/filter 和 reject
  • 链式调用、filter_map、flat_map 和 partition

下一步:使用 reduce 和 each_with_object 进行聚合。

puts [1, 2, 3, 4].select(&:even?).map { |n| n * n }.inspect

常见问题解答

「map、select、reject」课时是免费的吗?

是的 — 「map、select、reject」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。

「map、select、reject」这节课中我会学到什么?

转换与筛选 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ruby Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「map、select、reject」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Ruby Academy 课中编写并运行代码吗?

能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建范围
  2. Enumerable 模块
  3. map、select、reject
  4. reduce 与 each_with_object
← 返回 Ruby Academy