Ruby中带有示例的Array.uniq方法

Array.uniq方法

在本文中,我们将研究Array.uniq方法。大家都必须考虑该方法必须在做一些与从Array实例中查找唯一元素或对象有关的事情。它并不像看起来那么简单。好吧,我们将在其余内容中解决这个问题。我们将尝试借助语法并演示程序代码来理解它。

方法说明:

该方法是一个公共实例方法,为Ruby库中的Array类定义。此方法的工作方式是返回一个新数组,该数组包含self-Array实例中的所有唯一元素。如果在调用时随方法一起提供了一个块,则它将使用该块的返回值进行比较。此方法不会对自数组中对象的实际排列产生影响,因为该方法属于非破坏性方法的类别,在该类别中,该方法创建的更改是临时的或非永久的。

语法:

    array_instance.uniq -> Array or nil
    or
    array_instance.uniq{|item ...| block}-> new_array

Argument(s) 需要:

此方法不带任何参数。相反,如果您要基于某些条件查找唯一对象,则必须传递一个块。

范例1:

=begin
  Ruby program to demonstrate uniq method
=end

# 数组声明
table = ["Subha","Sham","Sham","Vivek","Me","Amisha","Zain","Subha","Vivek"]

puts "Array uniq implementation"
new_arr = table.uniq

puts "Array after finding unique: #{new_arr}"
puts "Original Array instance: #{table}"

输出结果

Array uniq implementation
Array after finding unique: ["Subha", "Sham", "Vivek", "Me", "Amisha", "Zain"]
Original Array instance: ["Subha", "Sham", "Sham", "Vivek", "Me", "Amisha", "Zain", "Subha", "Vivek"]

说明:

在上面的代码中,您可以观察到借助于Array.uniq方法,我们正在Array实例中找到唯一元素。在新的数组中,我们拥有自数组中唯一的所有对象。此方法不会对原始Array实例产生影响,因为该方法是非破坏性方法的示例之一。

范例2:

=begin
  Ruby program to demonstrate uniq method
=end

# 数组声明
table = ["Subha","Sham","Sham","Vivek","Me","Amisha","Zain","Subha","Vivek"]

puts "Array uniq implementation"
new_arr = table.uniq

puts "Array after finding unique: #{new_arr}"
puts "Original Array instance: #{table}"

输出结果

Array uniq implementation
Array after finding unique: [["Subha", "Sham"], ["din", "dopher"]]
Original Array instance: [["Subha", "Sham"], ["Subha", "Raat"], ["din", "dopher"]]

说明:

在上面的输出中,您可以注意到我们正在使用一个块调用Array.uniq方法。我们的self Array是一个多维数组,其中包含三个子数组。尽管这三个数组都是唯一的,但该方法已对所有三个数组实例的第一个对象的基础进行了比较。此方法不会对原始Array实例产生影响,因为该方法是非破坏性方法的示例之一。