Nov 28
На днях попросили меня помочь написать функцию сортировки массива на JavaScript, чтобы сохранилась связь между ключами и их значениями, т.е. аналог asort() в PHP. Поверхностный поиск в Google ничего подобного найти не смог, поэтому родилась вот такая функция (принимает массив или хеш, на выходе - хеш):
function asort(arr, sort_function) {
if (sort_function == undefined)
sort_function = function(a, b) { return a - b }
var b = [];
for (var i in arr)
b.push([i, arr[i]]);
b.sort(function(a, b) { return sort_function(a[1], b[1]) });
c = {};
for (var i in b)
c[b[i][0]] = b[i][1];
return c;
}
Примеры использования:
// сортировка по возрастанию
var h = asort([1, 10, 2, 5, 4]);
for(i in h)
alert(h[i]);
// сортировка по убыванию
var j = asort([1, 10, 2, 5, 4], function(a, b) { return b - a });
for(i in j)
alert(j[i]);
PS. В JS я не спец, так что, возможно, всё сделано абсолютно неправильно :)






February 16th, 2009 at 20:18
здесь есть и asort и много других функций
http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_asort/