Javascript.RU

PHP-функция: array_unique

Javascript:

function array_unique( array ) {	// Removes duplicate values from an array
	// 
	// +   original by: Carlos R. L. Rodrigues

	var p, i, j;
	for(i = array.length; i;){
		for(p = --i; p > 0;){
			if(array[i] === array[--p]){
				for(j = p; --p && array[i] === array[p];);
				i -= array.splice(p + 1, j - p).length;
			}
		}
	}

	return true;
}

Примеры:

array_unique(['Kevin','Kevin','van','Zonneveld']);
true


Автор: анонимус (не зарегистрирован), дата: 9 октября, 2008 - 22:15
#permalink

здравствуйте, могли бы вы указать автора этой функции?


Автор: Kreker (не зарегистрирован), дата: 19 ноября, 2008 - 00:15
#permalink

анонимус, Вы про которую?
Там в комментариях указан автор -- Carlos R. L. Rodrigues
Если Вы про ту, что в моем посте, то я и автор


Автор: Гость (не зарегистрирован), дата: 11 марта, 2009 - 19:51
#permalink
function array_unique(arr) {
    var tmp_arr = new Array();
    for (i = 0; i < arr.length; i++) {
        if (tmp_arr.indexOf(arr[i]) == "-1") {
            tmp_arr.push(arr[i]);
        }
    }
    return tmp_arr;
}

Эта функция не работает в IE
Вызывает ошибку


Автор: Kreker (не зарегистрирован), дата: 1 июня, 2009 - 19:06
#permalink

>Эта функция не работает в IE
>Вызывает ошибку

К сожалению, да, потому что IE не поддерживает метод indexOf для массивов. Для IE нужно писать костыль с циклом для перебора всех значений (использовать вариант, приведенный выше)


Автор: Илья Кантор, дата: 1 июня, 2009 - 19:24
#permalink

В коде этой функции нету вызова indexOf


Автор: _Natali_ (не зарегистрирован), дата: 4 марта, 2011 - 22:56
#permalink

Подскажите, пожалуйста, как сделать, чтобы эта функция производила регистронезависимое сравнение элементов массива. Пытаюсь применить
array[i].toLowerCase() === array[--p].toLowerCase(), не срабатывает Sad


Автор: _Natali_ (не зарегистрирован), дата: 5 марта, 2011 - 22:42
#permalink

Сорри, всё получилось.


Автор: Гость (не зарегистрирован), дата: 7 июля, 2011 - 12:26
#permalink

Функция не пашет...

var a = ['1', '1', '1', '2', '2', '3'];
array_unique(a);

в итоге: '1', '1', '2', '3'


Автор: Aetae, дата: 8 ноября, 2011 - 05:06
#permalink

А почему не просто:

function array_unique(inArr){
  var uniHash={}, outArr=[], i=inArr.length;
  while(i--) uniHash[inArr[i]]=i;
  for(i in uniHash) outArr.push(i);
  return outArr
}

Какие-то подводные камни?


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum