我正在尝试比较两个数组:
compareFrom = []
compareTo = ["John Doe", "Eric Schulz", "Tom Jerry"]
我尝试了以下内容:
arrayField1 = []
for r in empData
compareFrom << r.employeeName
end
if compareFrom.include?(compareTo)
#yes got it
end
即使false
与compareFrom
具有相同的值,我也无法理解为什么会得到compareTo
。
我需要在代码中更改哪些内容吗?
答案 0 :(得分:2)
Array#include?
仅测试数组中一个元素的成员资格。您的compare_from.include?(compare_to)
测试compare_to
是否为compare_from
的元素,并且例如如果true
为compare_from
,则返回[1, 2, 3, ["John Doe", "Eric Schulz", "Tom Jerry"], 5]
。
如果您想查看compare_to
中compare_from
的所有元素是否都在compare_to.all? { |element| compare_from.include?(element) }
中,(compare_from & compare_to).size == compare_to.size
是惯用且清晰的,但速度很慢;塔德曼require 'set'
Set[compare_to].subset?(Set[compare_from])
的表现要高得多。第三种选择,在谈到子集时,我可能更喜欢的是使用集合:
X-Powered-By: PHP/5.3.29
答案 1 :(得分:1)
此代码归结为:
var steps = [0, 2000, 3000, 5000, 7500, 10000, 15000, 20000, 300000];
$("#slider").slider({
range: "min",
value: 0,
min: 0,
max: steps.length,
step: 1,
slide: function(event, ui) {
$("#amount").text(steps[ui.value]);
}
});
在compare_from = emp_data.map(&:employee_name)
数组中的每个项目上调用employee_name
方法并返回包含结果的新数组。您可以使用emp_data
轻松测试两个阵列上的重叠,以找到交叉点:
&
如果该数组compare_to = ["John Doe", "Eric Schulz", "Tom Jerry"]
common = compare_from & compare_to
有任何条目,那么您就有匹配。