在 ruby 中,如何重新排列具有 id 键的对象数组,将数组的新顺序作为数组?

薄荷出发

我有一个带有数组的对象,如下所示:

some_object = {
  some_array: [
    { id: "foo0" },
    { id: "foo1" },
    { id: "foo2" },
    { id: "foo3" },
  ]
}

我有另一个数组的输入,我想在其中重新排列数组

target_order = [
  { id: "foo0", new_position: 3 },
  { id: "foo3", new_position: 0 },
  { id: "foo1", new_position: 2 },
  { id: "foo2", new_position: 1 }
]

如何使用第二个target_order数组来修改第一个数组的顺序some_object[:some_array]

理查德-德根

我建议您使用sort_by自定义块来查找新数组中项目的位置。

new_array = some_object[:some_array].sort_by do |item|
  order = target_order.detect { |order| order[:id] == item[:id] }
  next unless order

  order[:new_position]
end

这将返回以下值。

=> [{:id=>"foo2"}, {:id=>"foo1"}, {:id=>"foo0"}, {:id=>"foo3"}]

进一步的考虑

也许您想在列表中为每个项目指定一个位置,而不仅仅是对它们进行排序。例如

target_order = [
  { id: "foo0", new_position: 0 },
  { id: "foo1", new_position: 2 }
]

会给

=> [{ id: "foo0" }, nil, { id: "foo1" }]

为此,您应该使用each_with_object代替sort_by

new_array = target_order.each_with_object([]) do |order, memo|
  item = some_object[:some_array].detect { |item| item[:id] == order[:id] }
  next unless item

  memo[order[:new_position]] = item
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Ruby中的键将ID数组转换为哈希数组?

来自分类Dev

根据数字顺序重新排列数组元素,并以数组id表示

来自分类Dev

如何重新排列javascript数组中的对象?

来自分类Dev

如何重新排列数组

来自分类Dev

如何从其条目具有键ID的对象数组中制作{{id:value,...}这样的对象?

来自分类Dev

重新排列具有特定位置的数组元素

来自分类Dev

在Wordpress中重新排列对象数组

来自分类Dev

挑战:将仅特定值的顺序键在Ruby中组合到数组中

来自分类Dev

重新排列单元格后如何更改fetchresultcontroller数组中对象的顺序

来自分类Dev

如何重新排列列表中的对象

来自分类Dev

比较 RUBY 中数组的键

来自分类Dev

在Ruby中转换嵌套数组以将具有相同ID的项目分组

来自分类Dev

Ruby on Rails-从哈希数组中按现有键的特定顺序获取值的数组

来自分类Dev

如何使用Ruby 2.0从记录数组中查找记录ID

来自分类Dev

将数组填充到与 id 匹配的数组内的对象中

来自分类Dev

如何将多列重新排列为具有相同索引的一列

来自分类Dev

按ID数组排序RUBY

来自分类Dev

按ID数组排序RUBY

来自分类Dev

从Ruby中的数组返回对象

来自分类Dev

重新排列数组

来自分类Dev

重新排列数组

来自分类Dev

重新排列数组

来自分类Dev

如何从具有ID的数组中获取多个对象?

来自分类Dev

如何重新排列嵌套数组?

来自分类Dev

如何在Ruby中将数组中的ID字符串转换为没有字符串的ID数组?

来自分类Dev

在React JS中重新排列数组

来自分类Dev

在Simulink中重新排列数组

来自分类Dev

在PHP中重新排列数组值

来自分类Dev

Ruby:如何将对象名称传递给数组而不是ID

Related 相关文章

热门标签

归档