gpt4 book ai didi

arrays - 根据满足条件的内容和差异创建两个数组

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:02 25 4
gpt4 key购买 nike

假设我有以下数组:

a = [1,2,3]

我想将它分成两个数组,一个包含条件为真的项目,另一个包含相同条件为假的项目:

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_if 返回已删除的元素,则它会起作用,但原始数组会保持不变,但它不会那样起作用。

最佳答案

使用Enumerable#partition根据条件分隔数组中的元素。我们在 partition 的 block 中定义条件:

a = [1,2,3]

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

b #=> [3]
c #=> [1, 2]

此方法创建一个包含两个子数组的数组。

  • 第一个子数组包含 partition 的 block 返回 true 的值。
  • 第二个子数组包含 partition 的 block 返回 false 的值。

最后,我们应用并行分配将变量 b 分配给第一个子数组,将 c 分配给第二个子数组。

关于arrays - 根据满足条件的内容和差异创建两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40814771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com