Code Snippet
JavaScript Array Contains
Javascript objects are really nice, but sometimes they are missing some useful little functions/methods. The example above is with Arrays. It's really nice to know whether or not an item is contained within your array. Well you can write a function that takes the array and the item you're checking for, but it's much cleaner to add the contains( item ) method to the Array object.
Extending JavaScript Arrays
/**
* Array.prototype.[method name] allows you to define/overwrite an objects method
* needle is the item you are searching for
* this is a special variable that refers to "this" instance of an Array.
* returns true if needle is in the array, and false otherwise
*/
Array.prototype.contains = function ( needle ) {
for (i in this) {
if (this[i] == needle) return true;
}
return false;
}Usage
// Now you can do things like:
var x = Array();
if (x.contains('foo')) {
// do something special
}
I suggest making it more strict,
to:
for example, 1 is the same as true. Unless you do ===
Thank you V1, you’re absolutely right. That should definitely be a ===.
“i” should be declared locally (by using a var statement). Currently you’re setting it as a global variable. Also, you shouldn’t be using the “for(i in something)” construct for arrays. Instead use a traditional for or while loop; they’re much quicker.
Here is how I would write it, coming in at a mere 83 kb minified:
Thank you, It really worked.
Nicer still would be to write it like this:
/**
* is_array
*
* @param mixed input
* @return bol
*/
function is_array(obj) {
if (obj.constructor.toString().indexOf(‘Array’) == -1) {
return false;
}
return true;
}
/**
* contains
*
* @param mixed input
* @param string value
* @return bol
*/
function contains(input, value) {
if (!is_array(input)) {
if (input.indexOf(value) != -1) {
return true;
}
}
else {
var i = input.length;
while (i–) {
if (input[i] === value) {
return true;
}
}
}
return false;
}
DigWP
A book and blog co-authored by Jeff Starr and myself about the World's most popular publishing platform.
Quotes on Design
Design, like Art, can be an elusive word to define and an awfully fun thing to have opinions about.
HTML-Ipsum
One-click copy to clipboard access to Lorem Ipsum text that comes wrapped in a variety of HTML.
Bookshelf
Hey Chris, what books do you recommend? These, young fertile mind, these.