Ruby on rails 如何创建Ruby数组排序与AngularJS中的排序相同,小写应该位于大写之前

Ruby on rails 如何创建Ruby数组排序与AngularJS中的排序相同,小写应该位于大写之前,ruby-on-rails,ruby,arrays,angularjs,sorting,Ruby On Rails,Ruby,Arrays,Angularjs,Sorting,我正在用AngularJS编写Rails应用程序的测试,我想在这里检查站点上的排序是否正常。 在前端,单击排序按钮(orderBy:sort.column:sort.descending)此数组: arr=[“B kitty”、“K kitty”、“A kitty”、“Z kitty”、“B kitty”、“L kitty”、“S kitty”、“q kitty”、“c kitty”] 分类如下: sorted_arr=[“A kitty”、“b kitty”、“b kitty”、“c kitt

我正在用AngularJS编写Rails应用程序的测试,我想在这里检查站点上的排序是否正常。 在前端,单击排序按钮(orderBy:sort.column:sort.descending)此数组:

arr=[“B kitty”、“K kitty”、“A kitty”、“Z kitty”、“B kitty”、“L kitty”、“S kitty”、“q kitty”、“c kitty”]

分类如下:

sorted_arr=[“A kitty”、“b kitty”、“b kitty”、“c kitty”、“K kitty”、“L kitty”、“q kitty”、“S kitty”、“Z kitty”]

因此
“b kitty”
位于
“b kitty”
前面

但是我不能在Ruby中创建与预期相同的排序方法来对arr进行排序,相反,我总是在“B kitty”前面加上“B kitty”


有没有办法在我的测试中做到这一点?

arr.sort_by{s | s.downcase}
如果您不介意的话,
“b kitty”
“b kitty”
的重量相同

否则,您需要自定义排序

arr.sort do |s1, s2|
  if s1.downcase == s2.downcase
    s2 <=> s1
  else
    s1.downcase <=> s2.downcase
  end
end
arr.sort do | s1,s2|
如果s1.downcase==s2.downcase
s2 s1
其他的
s1.downcase s2.downcase
结束
结束
使用砰的一声
arr
本身,请使用code>运算符。

我认为AngularJS只是,结果正好是
b kitty
b kitty
前面。结果不稳定。(如果我有错误的假设,请纠正我)

如果希望Ruby代码中的稳定行为从AngularJS获得不稳定的排序结果,可以这样做:

arr.sort{|a, b| (c = a.downcase <=> b.downcase) == 0 ? b <=> a : c }
arr.sort{a,b |(c=a.downcase b.downcase)==0?ba:c}
您可以执行以下操作:

arr = ["B kitty", "K kitty", "A kitty", "Z kitty", "b kitty", "L kitty", "S kitty", "q kitty", "c kitty"]

arr.sort do |first, second|
  result = first.casecmp(second)
  result = second <=> first if result.zero?
  result
end
arr=[“B kitty”、“K kitty”、“A kitty”、“Z kitty”、“B kitty”、“L kitty”、“S kitty”、“q kitty”、“c kitty”]
arr.sort do |第一,第二|
结果=第一个。案例CMP(第二个)
如果结果为0,则结果=第二个第一个?
结果
结束

< /代码>您使用什么代码排序?在这种情况下,我会考虑ANGARALJS行为意外,因为大写字母在ASCII中的小写字母之前,因此也在Unicode字符集中。如果希望进行无大小写比较,可以在
ruby
中使用
arr.sort(&:casecmp)
,但这将使
中的“b kitty”
中的“b kitty”
的顺序未按预期进行指定。你能更具体地介绍一下你用来排序的ruby代码吗?谢谢大家的帮助,我试图创建自定义排序,但似乎我需要更多的实践:)谢谢,它可以工作!看起来这和BroiSatse写的一样,但是使用了Tritanal,我更喜欢你的代码。是的,我认为AngularJS排序结果是不稳定的,没有关于
b kitty
b kitty
的真正偏好,但是对于测试,我确实需要一些稳定的东西。事实上,我知道比较稳定和不稳定并不是最好的方法。这可能会回答这个问题,但最好根据问题的上下文解释你的答案
arr.sort_by{|x|[x.downcase,-x[0].ord]}