Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby rails包括哪些?大堆_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Ruby rails包括哪些?大堆

Ruby on rails Ruby rails包括哪些?大堆,ruby-on-rails,ruby,Ruby On Rails,Ruby,是否可以在数组中检查包含数组 我想检查一下 初级=[1,2,3]包括次级=[2,3] 我已尝试过primary.include?secondary=>false 需要返回布尔值解决方案 没有副本 如果没有任何重复项,则可以计算数组,并检查其是否为空: (secondary-primary).empty? #=> true 一般情况 你是谁?检查次要元素中的每个唯一元素,主要元素中至少有相同数量的元素: 例如: secondary.subset_of?(primary) #=> tr

是否可以在数组中检查包含数组

我想检查一下

初级=[1,2,3]包括次级=[2,3]

我已尝试过primary.include?secondary=>false

需要返回布尔值

解决方案 没有副本 如果没有任何重复项,则可以计算数组,并检查其是否为空:

(secondary-primary).empty?
#=> true
一般情况 你是谁?检查次要元素中的每个唯一元素,主要元素中至少有相同数量的元素:

例如:

secondary.subset_of?(primary)
#=> true
[2,2].subset_of?([1, 2, 3])
#=> false
这应该适用于任何阵列,并且应该比大型阵列的其他解决方案更快

测验 使用

使用交叉口

(primary & secondary).size == secondary.uniq.size
如果一回路中存在二回路的任何元件

(primary & secondary).present?

希望它有助于检查另一个数组中是否存在一个数组,只需使用include?方法,

要检查辅助阵列的元素是否存在于主阵列中,请同时处理重复元素:

result = (secondary.select {|i| secondary.count(i)<=primary.count(i)}.length == secondary.length)

primary, secondary = [1, 2, 3], [2, 2]
# returns false

primary, secondary = [1, 2, 2, 3], [2, 2, 1]
# returns true
这里正在做什么:

我们迭代第二个,声称所有的块都应该返回true 在随后的每次迭代中,我们 如果主循环中没有此类元素,则立即返回false中断循环 否则,我们将修改主元素的副本,删除已检查的元素。 这里唯一的技巧是在找到元素时始终返回true。主元素中的元素可能为falsey,Arraydelete返回已删除的元素,我们可能意外返回falsey,在这种情况下会错误地中断循环。我们应该回归真实吗?找到元素后立即循环,因此点击

验证这是目前为止唯一正确答案的输入:

primary, secondary = [1, 2, 2, 3, nil, nil], [2, 2, 1, nil, nil]
#⇒ true

primary, secondary = [1, 2, 2, 3, nil], [2, 2, 1, nil, nil]
#⇒ false
这里是解决方案


a1=[5,3,9,7,8,7,1,7]

a2=[1,9,5,7,5]

它将检查a1中是否存在a2元素

a2.所有?{i}a1.包括?i}=>正确

获取数组的块,并为每个组迭代一次。 可枚举真是太棒了



阅读,我每次都会学到一些新东西。

不清楚你在问什么你是在搜索类似于子集的东西还是类似于子字符串的东西?这个问题已经问了好几次了,你想检查元素2,3是否存在于主数组中还是[2,3]数组存在于主数组中?您显示的数组检查主数组中是否存在数组[2,3],如果不存在,则返回false。数组是否包含重复的值?例如,primary=[1,1,2]和secondary=[1,2,2]。如果是这样,在这种情况下,您将如何定义包含?抱歉,但这是错误的:[1,7]&[2,7]。是否存在?=>我认为次要元素中的任何一个元素都存在于主要元素中。我认为包含是指子集:。顺便说一句,我没有投反对票。请你把它删除。@GouravNaik我投了反对票,我投了,因为这个答案是错误的。请尝试[1,2,2]&[2,2]。它对重复的条目无效:[2,2]∉ [1,2],虽然你的解决方案是正确的,但你是对的。谢谢。后者很好。这完全是错误的。Try for secondary=[2,2]。它返回true,尽管a1只包含一个5。这只适用于连续元素。这对secondary=[1,3]@Stefan不起作用我不认为OP是这么要求的。听起来他们希望在原始阵列中包含整个辅助阵列。但如果这不是OP所要求的,你是对的。@Stefan观点很好,修正了。@mudasobwa你能不能添加一些细节,比如tap会在这里做什么?在这之前,你把索引分配给我,现在你已经创建了一个块,可以做类似的事情。我正在试图理解答案,但现在我还不清楚。@Deep请查看更新。这适用于任何阵列,但对于大型阵列可能会变得非常缓慢。例如primary=1..100_000.to_a和secondary=primary.reverse。现在的答案有点正确,但我不敢想象在大型阵列上需要多少次迭代。
(primary & secondary).size == secondary.uniq.size
(primary & secondary).present?
primary = [1,2,3,[1,2]]
secondary = [2,3]

result = primary.include? secondary
# returns false as [2,3] is not present

primary = [1,2,3,[1,2]]
secondary = [1,2]
result = primary.include? secondary
# returns true as [1,2] is present
result = (secondary.select {|i| secondary.count(i)<=primary.count(i)}.length == secondary.length)

primary, secondary = [1, 2, 3], [2, 2]
# returns false

primary, secondary = [1, 2, 2, 3], [2, 2, 1]
# returns true
test = primary.dup
secondary.all? { |e| test.index(e).tap { |i| test.delete_at(i) if i } }

primary, secondary = [1, 2, 3], [2, 2]
#⇒ false

primary, secondary = [1, 2, 2, 3], [2, 2, 1]
#⇒ true
primary, secondary = [1, 2, 2, 3, nil, nil], [2, 2, 1, nil, nil]
#⇒ true

primary, secondary = [1, 2, 2, 3, nil], [2, 2, 1, nil, nil]
#⇒ false
primary=[1,2,3]  
secondary=[2,3]  
secondary.all? { |e| primary.include?(e) }
primary = [1,2,3]
secondary = [2,3]
primary.each_cons(secondary.size).include?(secondary)