【问题标题】:Delete an array from a multi-dimensional array in ruby从ruby中的多维数组中删除一个数组
【发布时间】:2014-04-03 09:43:20
【问题描述】:

我有一个这种形式的多维数组:

array = [["http://domain.com/product.html", 10], ["http://domain.com/product.html", 150], ["http://domain.com/product.html", 500]]

我需要删除最后一个值小于 150 的所有数组。

我已经尝试了以下方法,但似乎没有任何效果:

array.delete_if {|element| element.last < 150 }

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 你的应该可以工作。你得到了什么输出?
  • 它以某种方式给了我相同的数组,它不会从中删除任何元素。
  • 您发布的代码按预期工作:codepad.org/CvR9Ykfr

标签: ruby arrays multidimensional-array


【解决方案1】:

我可能会这样做:

array.reject!{|x| x if x.last < 150}

【讨论】:

  • 这不是对这篇文章的回答,这是解决这个问题的另一种方法。你知道为什么#delete_if 在 OP 的示例中不起作用,我很确定应该起作用
  • 我不知道为什么它不起作用,它只是给了我相同的多维数组,没有改变。
  • 可能OP没有引用返回值,而是再次引用了array。这就是这个答案的重点。
  • 我不知道为什么这个答案被接受了,没有被问到.. OP 没有问怎么做,而 OP 却问为什么不工作
  • @user3493101 虽然这个答案有误导性,但正确的写法是array.reject!{|x| x.last &lt; 150}。如果你喜欢,就这样自学吧。
【解决方案2】:

你也可以这样用:

array.map{|f| f if f.last < 150}.compact

我不知道它是否比Akarsh 更好,这只是我会使用的另一种解决方案。 无论如何,您的解决方案有效,user3493101,但如果无效,您仍然可以使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 2014-11-17
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多