Being fairly new to JavaScript, I\'m unable to discern when to use each of these.
Can anyone help clarify this for me?
indexOf is for plain substrings, search is for regular expressions.
I think the main difference is that search accept regular expressions.
Check this reference:
Search finds it's matches with a regular expression, but has no offsets. IndexOf uses literals to match, but has an offset.
IndexOf
Search
indexOf() and search()
common in both
i) return the first occurrence of searched value
ii) return -1 if no match found
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
special in indexOf()
i) you can give starting search position as a second argument
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
search value can be regular expression
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
reference
If you require a regular expression, use search()
. Otherwise, indexOf()
is going to be faster.
IndexOf() - it accepts string literals or string objects but not regular expressions. It also accepts a zero-based integer value to start its search from, e.g.:
Search() - accepts both string literals or string objects and regular expressions. But it doesn't accepts a index to start the search from.