javascriptarraysalgorithmtime-complexityjavascript-objects

How do I check if an array includes a value in JavaScript?


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

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.


Solution

  • Modern browsers have Array#includes, which does exactly that and is widely supported by everyone except IE:

    console.log(['joe', 'jane', 'mary'].includes('jane')); // true

    You can also use Array#indexOf, which is less direct, but doesn't require polyfills for outdated browsers.

    console.log(['joe', 'jane', 'mary'].indexOf('jane') >= 0); // true


    Many frameworks also offer similar methods:

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