How do I check if an array includes an object in JavaScript?

What is the most concise and efficient way to find out if a JavaScript array contains an object?

This is the only way I know to do it:

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
    return false;

Is there a better and more concise way to accomplish this?

This is very closely related to Stack Overflow question Best way to find an item in a JavaScript Array? which addresses finding objects in an array using indexOf .

Current browsers have Array#includes , which does exactly that, is widely supported, and has a polyfill for older browsers.

> ['joe', 'jane', 'mary'].includes('jane');

You can also use Array#indexOf , which is less direct, but doesn’t require Polyfills for out of date browsers.

jQuery offers $.inArray , which is functionally equivalent to Array#indexOf .

underscore.js, a JavaScript utility library, offers _.contains(list, value) , alias _.include(list, value) , both of which use indexOf internally if passed a JavaScript array.

Some other frameworks offer similar methods:

Notice that some frameworks implement this as a function, while others add the function to the array prototype.