Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/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
Ruby on rails 以交替模式排列阵列_Ruby On Rails_Arrays_Ruby_Sorting - Fatal编程技术网

Ruby on rails 以交替模式排列阵列

Ruby on rails 以交替模式排列阵列,ruby-on-rails,arrays,ruby,sorting,Ruby On Rails,Arrays,Ruby,Sorting,我有一个哈希数组: [ {item0: 1.0, item1: 0.0}, {item0: 0.0, item1: 1.0}, {item0: 0.0, item1: 1.0}, {item0: 0.0, item1: 0.0} ] 我希望能够对数组进行排序,以便item1在1.0和0.0之间交替。将有相同数量的1和0 这怎么可能呢 array.sort_by{| x | x[item1]}未获得所需的输出 所需输出为: [ {item0: 1.0, item1: 0.

我有一个哈希数组:

[ 
  {item0: 1.0, item1: 0.0},
  {item0: 0.0, item1: 1.0},
  {item0: 0.0, item1: 1.0},
  {item0: 0.0, item1: 0.0}
]
我希望能够对数组进行排序,以便
item1
在1.0和0.0之间交替。将有相同数量的1和0

这怎么可能呢

array.sort_by{| x | x[item1]}
未获得所需的输出

所需输出为:

[ 
  {item0: 1.0, item1: 0.0},
  {item0: 0.0, item1: 1.0},
  {item0: 0.0, item1: 0.0},
  {item0: 0.0, item1: 1.0}
]
evens,赔率=my|u数组。分区{i | i[:item1]==0}
交替=[]
max=[evens.size,赔率.size].max
t=0
而t我相信这会给你想要的

data = [{item0: 1.0, item1: 0.0},
        {item0: 0.0, item1: 1.0},
        {item0: 0.0, item1: 1.0},
        {item0: 0.0, item1: 0.0}]

zeros, ones = data.partition{ |i| i[:item1] == 0 }

# This does the same
# ones   = data.select { |x| x[:item1] == 1 }
# zeros = data.select { |x| x[:item1] == 0 }

ones.zip(zeros).flatten.compact

从这个

中得到了想法这不是那个问题的重复。我不希望他们按顺序排列。我想让他们轮流。@Iceman是的,1.0和0.0的数字相同
data = [{item0: 1.0, item1: 0.0},
        {item0: 0.0, item1: 1.0},
        {item0: 0.0, item1: 1.0},
        {item0: 0.0, item1: 0.0}]

zeros, ones = data.partition{ |i| i[:item1] == 0 }

# This does the same
# ones   = data.select { |x| x[:item1] == 1 }
# zeros = data.select { |x| x[:item1] == 0 }

ones.zip(zeros).flatten.compact