gpt4 book ai didi

arrays - 将 x 元素移动到数组的末尾

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:27 26 4
gpt4 key购买 nike

我试图找到一种方法来获取特定关系并将其移动到数组的末尾。基本上,我有一个 current_account,我想使用这个帐户并将其移动到帐户关系数组的末尾,以便在我对关系进行迭代时显示在最后。我想创建一个范围并在可能的情况下使用 SQL,这是我的尝试,但我还没有真正取得进展。

HTML

<% current_user.accounts.current_sort(current_account).each do |account| %>
<li><%= link_to account.name, switch_account_accounts_path(account_id: account.id) %></li>
<% end %>

当前返回按 created_at 帐户排序的列表。我不希望它按创建时间排序,但 current_account 位于底部,所以我创建了一个名为 current_sort 的范围,但我不确定该怎么做在这里。

帐户的 CURRENT_SORT 范围

 scope :current_sort, lambda { |account|

}

我希望此作用域返回关联数组中最后传入的帐户。我如何使用 SQL 或 Ruby 执行此操作?

最佳答案

将特定元素排序到数组末尾的快速技巧是:

array.sort_by { |v| v == current_account ? 1 : 0 }

如果你想移动多个元素,这样做更容易:

to_end = [ a, b ]

array - to_end + to_end

编辑:正如 Stefan 指出的那样,这可能会重新订购商品。要解决这个问题:

array.sort_by.with_index do |v, i|
v == current_account ? (array.length + i) : i
end

您还可以使用 partition 以不同的方式处理它:

array.partition { |v| v != current_account }.reduce(:+)

这是 Stefan 在他们的回答中使用的方法的变体。

关于arrays - 将 x 元素移动到数组的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46026449/

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