You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何从对象数组中提取ID等指定属性值组成新数组

正确实现方式

纯Ruby环境写法

直接遍历数组中的每个哈希对象,提取对应的id键的值即可,运行结果和你预期完全一致:

id_array = iban_obj.map { |item| item['id'] }

Rails 或 Ruby 2.7+ 环境简化写法

可以直接用pluck方法批量提取指定键的值,写法更简洁:

id_array = iban_obj.pluck('id')

如果需要过滤掉数组中不存在id键的元素返回的nil值,可以在后面追加compact方法:

# 纯Ruby环境
id_array = iban_obj.map { |item| item['id'] }.compact
# Rails/Ruby2.7+环境
id_array = iban_obj.pluck('id').compact

原有写法错误说明

你之前尝试的两种写法都不符合需求,原因如下:

  • iban_obj.map{ |id| id }:块内的参数id实际是遍历到的每个完整哈希对象,直接返回该参数相当于返回所有原对象,最终得到的还是原数组,没有提取id字段值
  • iban_obj.select(&:id):select方法的作用是筛选符合条件的元素,不会修改返回元素的结构;另外你的数组元素是哈希类型,不存在id实例方法,&:id的写法还会触发方法不存在的报错。

内容的提问来源于stack exchange,提问作者user16741832

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:54:04