Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / Javascript

Filtering Array and Getting the Index of an Element in jQuery

0.00/5 (No votes)
6 Sep 2013CPOL 26.7K  
Filtering array and getting the index of an element in jQuery

Consider an example of getting unique elements from an array a = [1,1,2,3,8,2].

JavaScript
Array.prototype.unique = function(){
    var array = this;
    return array.filter(function(ele, index, arr){
        return index == arr.indexOf(ele);
    });
}

and in our JavaScript:

JavaScript
var array = [1,1,2,3,8,2];
var uniqueElments = array.unique();

//Output will be 1,2,3,8

But the issue is few of the older version browsers including Internet Explorer 7 that don't support some array features - such as indexOf or filter, so we can use jQuery functionalities like:

  • $.grep instead of Array.filter
    • The $.grep() method removes items from an array as necessary so that all remaining items pass a provided test. The test is a function that is passed an array item and the index of the item within the array. Only if the test returns true will the item be in the result array.
  • $.inArray instead of Array.indexOf
    • The $.inArray() method is similar to JavaScript's native .indexOf() method in that it returns -1 when it doesn't find a match. If the first element within the array matches value, $.inArray() returns 0.

Now here's how the changed code would look like:

JavaScript
Array.prototype.unique = function(){
    var array = this;
    return $.grep(array, function(ele, index){
            return $.inArray(ele, array) === index;
    });
}

References

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)