IndexOf
Suppose one string
exists as a substring inside another. In Node.js, we can search a string
with indexOf
or lastIndexOf
—an index integer is returned.
Another method, includes, also can search for strings. For more complex requirements a regular expression pattern and search()
can be used.
IndexOf
exampleThis method searches strings—we pass it a substring we want to find in a string
. It returns the index where the substring is found. If nothing is found it returns -1.
string
that contains the final 3 letters of the alphabet. Then we search for 2 of them—and "q" which is not found.var letters = "xyz"; // This is at index 0. var letterX = letters.indexOf("x"); console.log("RESULT 1: " + letterX); // This is at index 2. var letterZ = letters.indexOf("z"); console.log("RESULT 2: " + letterZ); // Not found, so we get -1 instead of an index. var letterQ = letters.indexOf("q"); console.log("RESULT 3: " + letterQ);RESULT 1: 0 RESULT 2: 2 RESULT 3: -1
The indexOf
method has an optional second argument. This is an integer that tells indexOf
where to start searching.
string
is found. But when we pass 1, we find the second "cat" string
as we miss the first.var words = "cat dog cat"; // Find the word beginning at index 0. var result1 = words.indexOf("cat", 0); console.log("RESULT: " + result1); // Find the word beginning at index 1. // ... The first instance is not found. var result2 = words.indexOf("cat", 1); console.log("RESULT: " + result2);RESULT: 0 RESULT: 8
LastIndexOf
This method searches a string
from the right side. It starts with the last index and then processes backwards to the first index.
var words = "cat dog cat"; // Find last occurrence of this substring. var result = words.lastIndexOf("cat"); console.log("LASTINDEXOF: " + result);LASTINDEXOF: 8
Sometimes an index is not needed when searching a string
. We use includes()
to see whether a substring exists as part of another or not.
indexOf
and a check against -1. But includes is easier to read.var birds = "parakeet parrot penguin"; // See if the string includes parrot. if (birds.includes("parrot")) { console.log("Parrot found"); } // This word is not found in the string. if (!birds.includes("zebra")) { console.log("Zebra not found"); }Parrot found Zebra not found
Scan
stringsWith indexOf
, we must loop over the string
to find a single value. This can result in excessive looping. We can scan strings for multiple characters at once with charCodeAt
.
Strings are commonly searched in Node. With indexOf
and its friends lastIndexOf
and includes, this searching is made easy.