Array.unique

25 Июнь 2010

Может пригодиться кому. Это реализация unique метода основанная на filter и lastIndexOf из JavaScript 1.6 . А для тех кто не поддерживает современных стандартов имплементация и этих методов.


Array.prototype.lastIndexOf = function(n, f){
	for (var l = this.length, j = ~~f, i = (1 in arguments && j <= l) ? j < 0 ? j + l : j : l - 1; i > -1; i--){
		if (i in this && this[i] === n){
			return i;
		}
	}
	return -1;
}
 
Array.prototype.filter = function(fn, obj){
	for (var l = this.length, i = 0, a = []; i < l; i++) {
		fn.apply(obj, [this[i], i, this]) && a.push(this[i]);
	}
	return a;
}

Array.prototype.unique = function(){
	return this.filter(function(e,i,a){
		return a.lastIndexOf(e) == i;
	});
}
  1. 26 Июнь 2010 в 08:51 | #1
    
    var getUniqueValues = function(a) {
    return a.filter(function(o,i,e){return e.indexOf(o)===i});
    }
    
    фильтр и индексОф стандартные же
  2. 26 Июнь 2010 в 09:31 | #2
    Спасибо, пригодится
  3. 26 Июнь 2010 в 10:24 | #3
    @deerua можно и через indexOf, только ты ошибся, он не поддерживается IE8
Комментирование отключено.