神奇的数组操作

    有一个Model Record,想在Records表中查找所有包含关键字keyword的记录,先每个字段模糊匹配,然后将每次查询的结果叠加起来,这样问题就来了,里面会有重复的记录。想到以前有通过循环的方法删除数组中重复的元素,也就用这样的方法进行删除,但代码繁琐还容易出错。在查询rails的数组的操作方法时,发现了这样一个操作 :

    |      并集操作,也就是把不同的组合在一起

这样在查询结果叠加的时候就能避免重复了O(∩_∩)O Rails的数组操作还真是方便啊

 

 

下面是Array常用的一些操作
&         取两数组相同
*         数组相乘
+         数组相加
-         [1,2,3]-[1,2,4] = [3]
<<          追加
<=>         比较每个元素 小于-1等于0大于1(每个元素比较)
to_ary        转换成数组
==        相等
[]        下标引用。a=[1,2,3,4].a[1]下标为1的元素,a[1,3]从下标为1顺序取三个,a[1..3]1-3的元素.特殊 a[4]=>nil, a[4..6]=>[], a[5..7] => nil
[]=        赋值
|        并集操作,也就是把不同的组合在一起
assoc('a')    匹配子数组第一个元素,匹配到返回子数组,否则nil不匹配字符串
at        返回下标处元素,比[]快,不支持range(范围,例:1..5)参数
clear        清楚数组
collect收集    对每个元素调用block。!号模式替换原来的,此拷贝原来数组
compact压缩    去掉nil,有!号模式
concat        追加后面的数组
delete        删除指定元素,返回删除元素,数组没有指定的元素返回nil,有block返回block[1,2].delete(1) {"sorry"}
delete_at     删除指定下标的
delete_if    有条件删除,调用block,返回剩余元素
each        循环数组
each_index    循环下标
empty?        判断是否为空
eql?        比较
fetch取来    用法a=[1,2,3] a.fetck(1)=>2,a.fetch(1,"b")=>1,a.fetch(5,"b")=>b,a.fetch(5){|i|i*i}=>25
fill填充,装满    参数型式(obj),(obj,range(范围)),{|i| i代表下标},(range){|i|操作}
flatten        扁平数组,!号模式
include?    包含 true or false
index        返回下标或nil
insert        插入只能指定下标,不能指定下标范围
join        合并,后面可以加参数('-')
last        返回最后一个,也可以加返回最后几个
length        数组长度
map        和collect同义
nitems        返回非nil的长度
pop        删除数组最后一个元素并返回,nil也返回nil
push        将指定参数加到数组中,可以任何对象
rassoc        不怎么明白有何用
reject        等同于delete_if
replace取代    替换元素
reverse相反    反序有!模式
reverse_each    逆序遍历数组
rindex        删除数组的最后一个指定的对象,没有返回nil
shift        删除第一个
slice        于[]同义
slice!        删除给定的索引,参数是range
sort        排序,有!模式
to_a,to_ary    转换成数组
tracspose    二维数组更换行和列
uniq        删除重复元素,有!模式
unshift        添加对象到数组首部
values_at    参数下标,返回数组。可以是范围

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值