从Ruby中的现有数组创建新数组

Massaskillz

我有以下2个数组:

fields = ["name", "team", "number", "name", "team", "number", "name", "team", "number"]
values = ["Patrick Ewing", "New York Knicks", 33, "Rik Smits", "Indiana Pacers", 45, "Bill Russell", "Boston Celtics", 6]

这些字段将始终仅是名称,团队和人数,但是值的数量(即,玩家数量)每次都会有所不同。

我想为每种字段类型创建新的数组,这样我将得到以下信息:

names = ["Patrick Ewing", "Rik Smits", "Bill Russell"]
teams = ["New York Knicks", "Indiana Pacers", "Boston Celtics"]
numbers = [33,45,6]

有什么好方法吗?我已经尝试了以下方法,但是想知道是否还有其他解决方案在较大的阵列(最多300个)中会更好地执行。还是差异可以忽略不计?

names = values.values_at(*(fields.each_index.select{ |i| fields[i] == "name"}))
teams = values.values_at(*(fields.each_index.select{ |i| fields[i] == "team"}))
numbers = values.values_at(*(fields.each_index.select{ |i| fields[i] == "number"}))

这是另一种/简洁的方法:

> name, team, number = values.each_slice(3).to_a.transpose
=> name
> ["Patrick Ewing", "Rik Smits", "Bill Russell"]
=> team
> ["New York Knicks", "Indiana Pacers", "Boston Celtics"]
=> number
> [33, 45, 6]

Ruby的Array#transpose的美丽开始发挥作用,特别是针对您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向JavaScript中的现有数组添加新值

在ruby的所有数组中创建一个具有公共字符串的新数组

如何使用现有数组的元素创建新数组?

在现有数组中的数组中添加新对象

使用JS中现有数组的一些值创建一个新数组

从现有对象数组创建新数组

使用.map和.filter过滤现有数组以创建新的过滤后的数组

从现有数组属性创建新数组

从现有数组创建HTML表

从php中的现有数组创建新数组

通过将新元素插入现有数组来创建新数组

使用现有数组中的唯一值创建新数组

在foreach中的每个循环中,在现有数组中创建新数组

向JavaScript中的现有数组添加新值

从现有数组和对象创建新对象

仅使用包含特定值的元素从现有数组创建新数组

根据ruby中现有数组中元素之间的关系创建一个新数组

如何在 Ruby 中的现有数组上创建二维数组?

在现有数组中添加新数组时数组形成不正确

分组并统计现有数组中的数据以创建新的重组数组

从现有数组中创建一个新数组

从现有数组中简化和排序新数组的创建

在现有数组上创建分页

如何在不复制数组的情况下创建对现有数组的新引用

如何从现有数组中创建嵌套数组

如何使用 TypeScript 中现有数组中的选定元素创建新数组?

从特定索引处的现有数组创建一个新数组

基于现有数组创建一个新的数组对象

如何从 SwiftUI View Init 中的现有数组创建新数组