grep(regex[, iterator = Prototype.K[, context]]) -> Array

Returns all the elements that match the filter. If an iterator is provided, it is used to produce the returned value for each selected element.

This method can filter items by string, regular expression, or any object with a match method. If filter is a string or regular expression, the filter is compared to the string representation of each element and those that match are added to the resulting array. Otherwise, filter is assumed to have a match method, and each item is passed as the first argument to filter.match. Those that return true are added to the resulting array.

The optional iterator parameter will transform the result set in a manner similar to map.

The optional context parameter is what the iterator function will be bound to. If used, the this keyword inside the iterator will point to the object given by the argument.

Legacy versions

Prior to Prototype 1.6, the grep method accepted only a string or regular expression as a filter.


// Get all strings with a repeated letter somewhere
['hello', 'world', 'this', 'is', 'cool'].grep(/(.)\1/)
// -> ['hello', 'cool']

// Get all numbers ending with 0 or 5
// -> [5, 10, 15, 20, 25, 30]

// Those, minus 1
$R(1,30).grep(/[05]$/, function(n) { return n - 1; })
// -> [4, 9, 14, 19, 24, 29]

// Get all an element's children filtered by CSS selector
// (the Selector instance has a "match" method)
$('foo').childElements().grep(new Selector(""));