如何从数组中删除指定索引处的元素,因为索引本身在数组中?

戴夫

我正在使用 Ruby 2.4。如果我有一组数组索引,并且我想删除这些索引处的所有元素,我该怎么做?我尝试了下面的方法,但它遗漏了一些东西

2.4.0 :005 > indexes_to_delete = [7, 8, 9]
 => [7, 8, 9]

2.4.0 :008 > a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
 => ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
2.4.0 :009 > indexes_to_delete.each do |index| a.delete_at(index) end
 => [7, 8, 9]
2.4.0 :010 > a
 => ["a", "b", "c", "d", "e", "f", "g", "i"]

注意结束数组。我应该在数组中只有七个元素,因为我从十个开始,然后指定了要在数组中删除的三个元素索引。然而我有八个元素。如何调整语句以删除指定索引处的元素?

卡里·斯沃夫兰

这里有几种方法可以做到这一点。

indexes_to_delete = [3, 8, 9]
a =    ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]

#1

indexes_to_delete.sort.reverse_each { |i| a.delete_at(i) }
a #=>  ["a", "b", "c",      "e", "f", "g", "h"] 

这变异了a如果不需要,请对a( a.dup)的副本进行操作

请记住,您必须按照与索引相反的顺序删除元素。

#2

 a.values_at(*(0..a.size-1).to_a - indexes_to_delete)
   #=> ["a", "b", "c",      "e", "f", "g", "h"]

首先我们计算“守门员”

(0..a.size-1).to_a - indexes_to_delete 
  #=> [0, 1, 2, 4, 5, 6] 

这不会变异a如果a要变异写

 a.replace(a.values_at(*(0..a.size-1).to_a - indexes_to_delete))
   #=> ["a", "b", "c",      "e", "f", "g", "h"] 
 a #=> ["a", "b", "c",      "e", "f", "g", "h"]

@maxple 给出了第三种方式 ( reject.with_index),这对我来说是最好的。我怀疑这三者之间是否存在显着的效率差异。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数组中的同一索引处推送多个元素

来自分类Dev

在数组中指定索引处减去元素

来自分类Dev

如何从数组中删除未知的索引元素

来自分类Dev

如何在特定索引处更改数组中的元素?

来自分类Dev

如何在给定索引处覆盖数组中的元素?

来自分类Dev

VBA在数组中的索引处获取Dim的名称

来自分类Dev

如何将数组中相同索引处的元素求和到单个数组中?

来自分类Dev

Codeigniter:如何从索引名称指定的数组中删除重复元素

来自分类Dev

在Swift 5中从数组中删除特定索引处的对象

来自分类Dev

通过索引从数组中删除元素

来自分类Dev

从索引AngularJS上方的数组中删除元素

来自分类Dev

从指定索引处的数组中获取适当的值

来自分类Dev

在数组中查找索引

来自分类Dev

JavaScript拼接删除索引+ 1处的数组元素,而不是索引

来自分类Dev

在MATLAB中删除多维数组中一组索引处的元素?

来自分类Dev

在ruby数组中的特定索引处推送元素

来自分类Dev

从numpy数组中删除选择索引处的行

来自分类Dev

如何在数组中查找数组的索引

来自分类Dev

如何在数组索引的数组中设置值

来自分类Dev

如何在数组中查找数组的索引

来自分类Dev

从序列中删除索引处的元素

来自分类Dev

如何通过数组中指定索引处的元素对数组列表进行排序

来自分类Dev

在数组红宝石中查找元素的索引

来自分类Dev

在数组的负索引中添加元素?

来自分类Dev

使用键删除索引数组中的数组元素

来自分类Dev

如何从状态数组中删除正确的索引?

来自分类Dev

如何使用javascript中的int变量访问索引处的数组?

来自分类Dev

如何使用javascript中的int变量访问索引处的数组?

来自分类Dev

检查数组中特定索引处的值?

Related 相关文章

  1. 1

    在数组中的同一索引处推送多个元素

  2. 2

    在数组中指定索引处减去元素

  3. 3

    如何从数组中删除未知的索引元素

  4. 4

    如何在特定索引处更改数组中的元素?

  5. 5

    如何在给定索引处覆盖数组中的元素?

  6. 6

    VBA在数组中的索引处获取Dim的名称

  7. 7

    如何将数组中相同索引处的元素求和到单个数组中?

  8. 8

    Codeigniter:如何从索引名称指定的数组中删除重复元素

  9. 9

    在Swift 5中从数组中删除特定索引处的对象

  10. 10

    通过索引从数组中删除元素

  11. 11

    从索引AngularJS上方的数组中删除元素

  12. 12

    从指定索引处的数组中获取适当的值

  13. 13

    在数组中查找索引

  14. 14

    JavaScript拼接删除索引+ 1处的数组元素,而不是索引

  15. 15

    在MATLAB中删除多维数组中一组索引处的元素?

  16. 16

    在ruby数组中的特定索引处推送元素

  17. 17

    从numpy数组中删除选择索引处的行

  18. 18

    如何在数组中查找数组的索引

  19. 19

    如何在数组索引的数组中设置值

  20. 20

    如何在数组中查找数组的索引

  21. 21

    从序列中删除索引处的元素

  22. 22

    如何通过数组中指定索引处的元素对数组列表进行排序

  23. 23

    在数组红宝石中查找元素的索引

  24. 24

    在数组的负索引中添加元素?

  25. 25

    使用键删除索引数组中的数组元素

  26. 26

    如何从状态数组中删除正确的索引?

  27. 27

    如何使用javascript中的int变量访问索引处的数组?

  28. 28

    如何使用javascript中的int变量访问索引处的数组?

  29. 29

    检查数组中特定索引处的值?

热门标签

归档