arrays - 遍历数组,将字符串转换为数组,推送到 Ruby 中的新数组

标签 arrays ruby loops iteration each

我目前正在做一个项目,我需要循环遍历一个字符串数组,将这些字符串转换成数组,然后将这些数组放入一个更大的数组中。有些字符串有单词重复,所以我也需要删除它。我想避免对所有内容进行硬编码,因此我尝试编写尽可能多的函数。

这是我正在谈论的例子。

old_array = ['Lilies are lovely lovely', 'Roses are romantic romantic', 'Daisies are bright bright']

new_array = []

新数组应该是这样的:

new_array = [['Lilies', 'are', 'lovely'], ['Roses', 'are', 'romantic'], ['Daisies', 'are', 'bright']]

因此必须将 old_array 中的字符串转换为子数组,并删除重复的单词。

我已经尝试了一段时间,但效果不是很好。

def s_to_a(array)
  array.each do |string|
    string.split(" ").uniq
    new_array.push(string) #pretty sure this is incorrect
  end
end

s_to_a(old_array)

我不断得到的错误是 new_array 是一个未定义的局部变量,因为我在函数外初始化了它。我会以错误的方式解决这个问题吗?有人有任何指示吗?

最佳答案

这种事情用 map 最容易完成,像这样:

new_array = old_array.map{|s| s.split.uniq }

详情

map 是一个 Enumerable 方法,它将调用它的可枚举对象(通常是一个 array)转换或“映射”到一个新的数组。这比使用 nil 检查手动插入子数组更方便。

String 方法 split 默认在空白字符上拆分,所以我们可以不带参数调用它,它会返回一个单词数组。 更多细节... split 使用 $; 作为它的默认参数,它是 Ruby 的全局 field separator 变量。 . 如果字段分隔符为 nil(默认情况下),split 默认为空格分隔

关于arrays - 遍历数组,将字符串转换为数组,推送到 Ruby 中的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38176690/

相关文章:

java - 找到每个点的最近点(Nearest Neighbor)

ruby-on-rails - 如何在哈希数组中搜索哈希键值

loops - 如何在特定点循环播放ROBLOX音频?

Python 函数不能在循环内工作

javascript - 如何在二维数组上应用 ko.utils.arrayGetDistinctValues

javascript - 如何将新对象推送到数组而不得到一堆重复项?

ruby-on-rails - 在ruby中,item.nil怎么写? ?无 : item. id.to_s

ruby - 关联对象没有主键

c# - 如何提高foreach循环的性能

php - array_unshift 用于多维数组