Arrays Ruby:如果2d数组中的条目不等于特定的1d数组,则从该数组中删除该条目
我在理解Ruby中某些代码的行为时遇到了一些问题。我想将二维数组的内容与特定的一维数组相匹配Arrays Ruby:如果2d数组中的条目不等于特定的1d数组,则从该数组中删除该条目,arrays,ruby,multidimensional-array,Arrays,Ruby,Multidimensional Array,我在理解Ruby中某些代码的行为时遇到了一些问题。我想将二维数组的内容与特定的一维数组相匹配 s = [1,2,3].repeated_permutation(2).to_a solution = [3,1] s.each do |x| if x != solution puts s.length print "#{x}\n" s.delete(x) end end 我不明白的是,这段代码将返回以下内容: s = [[1, 2],
s = [1,2,3].repeated_permutation(2).to_a
solution = [3,1]
s.each do |x|
if x != solution
puts s.length
print "#{x}\n"
s.delete(x)
end
end
我不明白的是,这段代码将返回以下内容:
s = [[1, 2], [2, 1], [2, 3], [3, 1], [3, 3]]
我是一个初学者,我一定忽略了一些基本的东西。
我确实以一种肯定不理想的方式绕过了这个问题:
s = [1,2,3].repeated_permutation(2).to_a
solution = [3,1]
s.each_with_index do |x,idx|
if x != solution
s[idx] = nil
end
end
=> [nil,nil,nil,nil,nil,nil,nil,[3,1],nil]
s.flatten!.compact!
=> [3,1]
有人能告诉我什么是执行此检查的好方法吗?
提前感谢查看该方法,该方法可用于根据对块的评估从数组中选择值。例如:
s.select { |arry| arry == solution }
这将返回一个数组,其中包含s
中与解决方案
数组匹配的元素,例如[[3,1]]
查看该方法,该方法可用于根据对块的求值从数组中选择值。例如:
s.select { |arry| arry == solution }
这将返回一个数组,其中包含
s
中与解决方案
数组匹配的元素,例如[[3,1]]
您要查找的实际上是:
代码返回整个数组的原因是
Enumerable#每个
迭代器返回接收器本身。不建议在枚举过程中更改枚举项,这可能会导致不可预测/意外的结果<代码>当底层阵列发生更改时,每个都会让人抓狂。您要查找的实际上是:
代码返回整个数组的原因是
Enumerable#每个
迭代器返回接收器本身。不建议在枚举过程中更改枚举项,这可能会导致不可预测/意外的结果<当底层数组被更改时,每个都会变得疯狂。每个
都从s
中删除元素,从原始9中删除4个元素,留下长度为5的s
。每个
都从s
中删除元素,从原始9中删除4个元素,留下长度为5的s
。