Consider an example of getting unique elements from an array a = [1,1,2,3,8,2]
.
Array.prototype.unique = function(){
var array = this;
return array.filter(function(ele, index, arr){
return index == arr.indexOf(ele);
});
}
and in our 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:
Array.prototype.unique = function(){
var array = this;
return $.grep(array, function(ele, index){
return $.inArray(ele, array) === index;
});
}
References