Symbol.search
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
TheSymbol.search static data property represents thewell-known symbolSymbol.search. TheString.prototype.search() method looks up this symbol on its first argument for the method that returns the index within a string that matches the current object.
For more information, seeRegExp.prototype[Symbol.search]() andString.prototype.search().
In this article
Try it
class Search1 { constructor(value) { this.value = value; } [Symbol.search](string) { return string.indexOf(this.value); }}console.log("foobar".search(new Search1("bar")));// Expected output: 3Value
The well-known symbolSymbol.search.
Property attributes ofSymbol.search | |
|---|---|
| Writable | no |
| Enumerable | no |
| Configurable | no |
Examples
>Custom string search
js
class CaseInsensitiveSearch { constructor(value) { this.value = value.toLowerCase(); } [Symbol.search](string) { return string.toLowerCase().indexOf(this.value); }}console.log("foobar".search(new CaseInsensitiveSearch("BaR"))); // 3Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-symbol.search> |
Browser compatibility
Loading…