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 я не спец, так что, возможно, всё сделано абсолютно неправильно :)

written by fxposter \\ tags:


One Response to “Аналог PHP-шной asort() на JavaScript”

  1. 1. igrkio Says:

    здесь есть и asort и много других функций
    http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_asort/

Leave a Reply