JavaScript: sort an array

Октябрь 13, 2009

Понадобилось тут отсортировать массив объектов по полю ‘url’. У типа Array есть функция sort, которая может принимать функцию определяющую алгоритм сравнения. Первый вариант кода выглядел так:

        function sortFunc(a, b)
	{
		return a.url > b.url;
	}

	list.sort(sortFunc);

Тестировался скрипт в ФФ, в котором все работало. Однако, другие браузеры отказывались сортировать список. После небольшого исследования, выяснилось, что функция должна возвращать предопределенные значения — 0, 1 или -1. Окончательный вариант:

       function sortFunc(a, b)
	{
		if ( a.url < b.url ) 			
                     return -1; 		
                if ( a.url > b.url )
			return 1;
		return 0;
	}

	list = list.sort(sortFunc);

Такой код уже нравится и ИЕ, и Опере, и Хрому.

tags:
posted in Web by dmitko

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org