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


Автор: Kreker (не зарегистрирован), дата: 24 июня, 2008 - 01:49
#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;
}

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

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


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

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


Автор: Гость (не зарегистрирован), дата: 11 марта, 2009 - 20: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
Вызывает ошибку


Автор: Гость (не зарегистрирован), дата: 12 марта, 2009 - 00:36
#permalink
function in_array(needle, haystack) {    // Checks if a value exists in an array
 
    var found = false, key;
 
    for (key in haystack) {
        if (haystack[key] === needle){
            found = true;
            break;
        }
    }
 
    return found;
}


function array_unique(arr) {
    var tmp_arr = new Array();
    for (i = 0; i < arr.length; i++) {
        if (!in_array(arr[i],tmp_arr) ) {
            tmp_arr.push(arr[i]);
        }
    }
    return tmp_arr;
}

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

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

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


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

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


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

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


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

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


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

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

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

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


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

function RemoveDuplicateFromArray(Arr) {
var Cur, j, i = 0;
while (i < Arr.length) {
Cur = Arr[i];
for (j = i + 1; j < Arr.length; j++) {
if (Cur == Arr[j]) {
Arr.splice(i, 1);
i--;
break;
}
}
i++;
}
}


Автор: Aetae, дата: 8 ноября, 2011 - 06: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
}

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


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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