Tri*_*rip 23 ruby arrays ruby-on-rails
我正在比较邮政编码.
我有三个常用的邮政编码:
ZIP_MORRIS
ZIP_UNION
ZIP_ESSEX
Run Code Online (Sandbox Code Playgroud)
我想看看用户是否在Object的数组中,其中一个包含在其中.
我试过这个:
ZIP_UNION.sort{|x,y| y <=> x} <=> Email.find(3).distributions.map(&:zip_code).uniq.compact.sort{|x,y| y <=> x}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这只是映射了所有的邮政编码,所以如果我要在不同的县选择一个额外的邮政编码,那么就不能正确地比较它们.
我认为最好的解决方案是比较用户生成的拉链的值,并查看一个ZIP_COUNTY中的所有拉链是否都存在于数组中.
某种迭代器会遍历所有拉链并确保用户的zip包含或不包含zip组中的每个zip.
有任何想法吗?
Mic*_*ohl 76
您可以执行数组差异,如果结果是空数组,则2个数组包含相同的元素:
>> [1,2,3]-[3,1,2] #=> []
Run Code Online (Sandbox Code Playgroud)
如果仍然有元素,那么第一个数组的所有元素都不会出现在第二个元素中:
>> [1,2,5]-[3,1,2] #=> [5]
Run Code Online (Sandbox Code Playgroud)
下面我正在使用全部?数组上的运算符,如果数组中的所有项都为我传入的块返回true,则返回true.
my_zip = [1,2,3,4,5,6]
[2,3,5].all?{|z| my_zip.include?(z)}
=> true
[20,3,5].all?{|z| my_zip.include?(z)}
=> false
Run Code Online (Sandbox Code Playgroud)
您只需将其更改为用户的邮政编码即可
> [1,2,3] <=> [1,2,3]
=> 0
> [1,2,3] <=> [2,2,3]
=> -1
> [1,2,3] <=> [3,2,3]
=> -1
> [1,2,3] <=> [1,3,3]
=> -1
> [1,2,3] <=> [1,1,3]
=> 1
Run Code Online (Sandbox Code Playgroud)
这是来自RailsThinker Post,并且一直很适合我.
| 归档时间: |
|
| 查看次数: |
30679 次 |
| 最近记录: |