javascript tutorial - [Solved-5 Solutions] Best way to find if an item is in a javascript array?
- javascript - java script - javascript array
Problem :
What is the best way to find if an object is in an array?
This is the best way We know:
Solution 1:
EDIT: This will not work on IE6, 7 or 8 though. The best workaround is to define it yourself if it's not present:
1. Mozilla's(ECMA-262) version:
2. Daniel James's version:
3. roosteronacid's version:
Solution 2:
If we are using jQuery:
Solution 3:
First, implement indexOf in JavaScript for browsers that don't already have it. For example, see Erik Arvidsson's array extras(also, the associated blog post). And then we can use indexOfwithout worrying about browser support. Here's a slightly optimised version of his indexOfimplementation:
It's changed to store the length so that it doesn't need to look it up every iteration. But the difference isn't huge. A less general purpose function might be faster:
We prefer using the standard function and leaving this sort of micro-optimization for when it's really needed. But if you're keen on micro-optimization WE adapted the benchmarks that roosterononacid linked to in the comments, to benchmark searching in arrays. They're pretty crude though, a full investigation would test arrays with different types, different lengths and finding objects that occur in different places.
Solution 4:
assuming .indexOf() is implemented
!!! do not make Array.prototype.has=function(){... because you'll add an enumerable element in every array and js is broken.
Solution 5:
It depends on our purpose. If we program for the Web, avoid indexOf, it isn't supported by Internet Explorer 6 (lot of them still used!), or do conditional use:
indexOf is probably coded in native code, so it is faster than anything we can do in JavaScript (except binary search/dichotomy if the array is appropriate). Note: it is a question of taste, but WE would do a return false; at the end of our routine, to return a true Boolean...