Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 循环遍历数组,将字符串转换为数组,在Ruby中推送到新数组_Arrays_Ruby_Loops_Iteration_Each - Fatal编程技术网

Arrays 循环遍历数组,将字符串转换为数组,在Ruby中推送到新数组

Arrays 循环遍历数组,将字符串转换为数组,在Ruby中推送到新数组,arrays,ruby,loops,iteration,each,Arrays,Ruby,Loops,Iteration,Each,我目前正在进行一个项目,需要循环遍历字符串数组,将这些字符串转换为数组,并将这些数组推送到更大的数组中。有些字符串有单词重复,所以我也需要删除它。我希望避免硬编码,所以我正在尝试编写尽可能多的函数 这是我所说的一个例子 old_array = ['Lilies are lovely lovely', 'Roses are romantic romantic', 'Daisies are bright bright'] new_array = [] 以下是新阵列的外观: new_array =

我目前正在进行一个项目,需要循环遍历字符串数组,将这些字符串转换为数组,并将这些数组推送到更大的数组中。有些字符串有单词重复,所以我也需要删除它。我希望避免硬编码,所以我正在尝试编写尽可能多的函数

这是我所说的一个例子

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']]
因此,必须将旧_数组中的字符串转换为子数组,并删除重复的单词

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

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_数组是一个未定义的局部变量,因为我在函数外部初始化了它。我走错方向了吗?有人有任何指示吗?

这类事情最容易用map完成,如下所示:

new_array = old_array.map{|s| s.split.uniq }
细节 map是一种可枚举方法,它将在数组上调用的可枚举对象转换或映射为新数组。这比使用nil检查手动推入子数组更方便


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

使用map最容易实现这类操作,如下所示:

new_array = old_array.map{|s| s.split.uniq }
细节 map是一种可枚举方法,它将在数组上调用的可枚举对象转换或映射为新数组。这比使用nil检查手动推入子数组更方便


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

学习Ruby的每个人都应该花一些时间浏览库中提供的多种方法,因为其中许多方法非常方便。map就是这样一种方法,但是还有很多其他的方法。非常感谢您提供有关map的提示!学习Ruby的每个人都应该花一些时间浏览库中提供的大量方法,因为其中许多方法非常方便。map就是这样一种方法,但是还有很多其他的方法。非常感谢您提供有关map的提示!如果old_array=['abb','bab'],那么期望的结果是什么?如果旧的数组=['一磅钉子一磅]?将新的数组=[]作为方法的第一行,那么代码就可以工作了。但正如@Cam所说,您应该在这种情况下使用。谢谢您的建议!如果old_array=['abb','bab'],那么期望的结果是什么?如果旧的数组=['一磅钉子一磅]?将新的数组=[]作为方法的第一行,那么代码就可以工作了。但正如@Cam所说,您应该在这种情况下使用。谢谢您的建议!