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"));