Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 根据满足条件的内容和差异创建两个阵列_Arrays_Ruby - Fatal编程技术网

Arrays 根据满足条件的内容和差异创建两个阵列

Arrays 根据满足条件的内容和差异创建两个阵列,arrays,ruby,Arrays,Ruby,假设我有以下数组: a = [1,2,3] 我想将其拆分为两个数组,一个包含条件为true的项,另一个包含相同条件为false的项: b, c = a.split_in_two_arrays_or_something_like_that {|x| x == 3} #=> b = [3] #=> c = [1,2] 我用ruby怎么做?我不想重复类似以下内容的代码: b = a.reject {|x| x == 3} c = a.reject {|x| x != 3} 也不在数组

假设我有以下数组:

a = [1,2,3]
我想将其拆分为两个数组,一个包含条件为true的项,另一个包含相同条件为false的项:

b, c = a.split_in_two_arrays_or_something_like_that {|x| x == 3}
#=> b = [3]
#=> c = [1,2]
我用ruby怎么做?我不想重复类似以下内容的代码:

b = a.reject {|x| x == 3}
c = a.reject {|x| x != 3}
也不在数组上迭代两次

是否有某种方法返回的结果与修改后的数组不同?例如,
delete\u if
将返回已删除的元素,但原始数组将保持不变,但不起作用。

用于根据条件分离数组中的元素。我们在
分区
的块中定义条件:

a = [1,2,3]

b, c = a.partition { |x| x == 3 } #=> [[3], [1, 2]]

b #=> [3]
c #=> [1, 2]
此方法创建具有两个子阵列的阵列

  • 第一个子数组包含
    partition
    的块返回true的值
  • 第二个子数组包含
    partition
    的块返回false的值
最后,我们应用并行赋值将变量b分配给第一个子数组,将变量c分配给第二个子数组。

用于根据条件分离数组中的元素。我们在
分区
的块中定义条件:

a = [1,2,3]

b, c = a.partition { |x| x == 3 } #=> [[3], [1, 2]]

b #=> [3]
c #=> [1, 2]
此方法创建具有两个子阵列的阵列

  • 第一个子数组包含
    partition
    的块返回true的值
  • 第二个子数组包含
    partition
    的块返回false的值
最后,我们应用并行分配将变量b分配给第一个子数组,将变量c分配给第二个子数组