grep
grep(filter[, iterator = Prototype.K[, context]]) -> Array
返回所有和指定的正则表达式匹配的元素。如果指定参数 iterator
,则可以对匹配的元素进行相应处理。
该方法能够根据指定的字符串、正则表达式或任意具有 match
方法的对象来获取匹配的 Enumerable
中的元素。如果指定的 filter
是一个字符串或正则表达式,则将 Enumerable
中元素的字符串描述形式与
filter
进行比较,若匹配,则将元素加入到结果数组。否则,假定 filter
是一个具有 match
方法的对象,然后将元素传递给 filter.match
作为第一个参数,那些使 filter.match
方法返回
true
的元素将被增加到结果数组中。
参数 iterator
是可选的,它可以对结果集进行相应的转换,这种转换类似于 map。
可选的 context
参数是 iterator
要绑定的对象,若设定该参数,iterator
中的 this
关键字将指向 context
对象。
版本兼容性
在 Prototype 1.6 之前,grep
方法的 filter
参数 仅 接受一个字符串或正则表达式。
样例
// 获取所有具有连续相同字符的字符串
['hello', 'world', 'this', 'is', 'cool'].grep(/(.)\1/)
// -> ['hello', 'cool']
// 获取所有末尾为 0 或 5 的数字
$R(1,30).grep(/[05]$/)
// -> [5, 10, 15, 20, 25, 30]
// 获取所有末尾为 0 或 5 的数字,并将相应的值减 1
$R(1,30).grep(/[05]$/, function(n) { return n - 1; })
// -> [4, 9, 14, 19, 24, 29]
// 获取某元素下与指定 CSS 选择器相匹配的所有子元素
// (Selector 实例有一个 "match" 方法)
$('foo').childElements().grep(new Selector("li.active"));