相关疑难解决方法(0)

通过可能为nil的属性对ruby对象数组进行排序

我有一个对象数组,我需要通过一个可以是整数或零的位置属性进行排序,我需要将nil位置的对象放在数组的末尾.现在,我可以强制该位置返回一些值而不是nil,以便array.sort不会失败,但如果我使用0作为默认值,那么它将这些对象放在排序的前面.这种方法最好的方法是什么?我应该将nil值设置为一些"几乎"始终保证最终的可笑数字吗?或者是否有其他方法可以使array.sort方法将nil属性对象放在数组的末尾?代码如下所示:

class Parent
  def sorted_children
     children.sort{|a, b| a.position <=> b.position}
  end
end

class Child
  def position
    category ? category.position : #what should the else be??
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果我把'else'变成1000000000,那么它很可能会把它们放在数组的末尾,但我不喜欢这个解决方案,因为它是任意的

ruby arrays sorting

37
推荐指数
4
解决办法
2万
查看次数

在Ruby中对数组数组进行排序

我有一个像这样的数组:

irb(main):028:0> device_array
=> [["name1", "type1", ["A", "N", "N"], ["Attribute", "device_attribute"], 9], ["name2","type2", ["A", "N", "N"], ["Attribute", "device_attribute"], 7]]
Run Code Online (Sandbox Code Playgroud)

我想在第4个元素上对整个device_array进行排序.

我试过了

AllDevicesController.all_devices.sort do | a,b |
  for i in 0..(AllDevicesController.all_devices.length - 1) do
    a[i][4] <=> b[i][4]
  end
end
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

AllDevicesController.all_devices.sort do | a,b |
  a[][4] <=> b[][4]
end
Run Code Online (Sandbox Code Playgroud)

这两种方法都没有奏效.

我使用它作为参考:http: //ariejan.net/2007/01/28/ruby-sort-an-array-of-objects-by-an-attribute/

我想我错过了一些红宝石,这让我很容易.

ruby arrays

22
推荐指数
2
解决办法
2万
查看次数

标签 统计

arrays ×2

ruby ×2

sorting ×1