I have this code:
var ar = [10,7,8,3,4,7,6];
function isin(n,a){
for (var i=0;i<a.length;i++){
if (a[i]== n) {
var b = true;
return b;
} else {
var c = false;
return c;
}
}
}
function unique(a){
var arr = [];
for (var i=0;i<a.length;i++){
if (!isin(a[i],arr)){
arr.push(a[i]);
}
}
return arr;
}
alert(unique(ar));
In this code, I try to create new unique array (without duplicates) out of the original one.
But I still get the original array! Where’s my mistake?
Using a plain array and returning the keys of associative array (containing only the “unique” values from given array) is more efficient:
Note: The function does not preserve the order of the items, so if this is important use different logic.
As of IE9 and on all other modern browsers (e.g. Chrome, Firefox) this can become even more efficient by using the
Object.keys()method:Thanks wateriswet for bringing this to my attention. 🙂