ordina gli array sia in ordine ascendente che discendente usando jquery

Sto cercando di ordinare il mio array, sia in ordine ascendente che discendente. Non riesco a capire come farlo correttamente però. Ho provato con metodi diversi, ma nessuno ha funzionato. Questo dovrebbe accadere quando clicco su due pulsanti, uno con l’ID “stigande” crescente e uno con l’ID “fallande” discendente. Qualche soluzione?

Javascript

$(document).ready(function(){ var $films = []; // ändra bakgrundsfärg för textfield $('#name').keyup(function(){ $('#name').css('background-color', 'white'); }); // ändra bakgrundsfärg för select lista $('#options').change(function(){ $('#options').css('background-color', 'white'); }); // kör funktionen när knappen med id button klickas $("#button").click(function(){ var $titelBetyg = []; var $titel = $('#name').val(); var $betyg = $('#options').val(); // kontrollera om textfield är tom if($titel == ""){ $('#name').css('background-color', 'red'); alert("Mata in titel....."); } // kontrollera om select lista inte är vald else if($betyg == "0"){ $('#options').css('background-color', 'red'); alert("Välj betyg...."); } else{ $titelBetyg.push($titel); $titelBetyg.push($betyg); $films.push($titelBetyg); var $ul = $('#rightbar ul').empty(); if (!$ul.length){ // om ul inte finns $ul = $("
    ").appendTo('#rightbar'); // skapa en ny } // loopa igenom arrayen och placera innehållet i ul och li for (var i=0; i<$films.length; i++){ $ul.append("
  • " + $films[i][0] + " " + $films[i][1] + "
  • "); } $('#form').get(0).reset(); } }); // kör funktionen när knappen med id stigande klickas $('#stigande').click(function(a,b){ $films.sort(); }); // kör funktionen när knappen med id fallande klickas $('#fallande').click(function(){ $films.reverse(); }); });

Mentre stai ordinando una serie di array invece di ordinare solo una serie di nomi, dovrai fare qualcosa di leggermente diverso per l’ordinamento.

Prova a usare qualcosa come questo:

 function arrSort(arr, subkey){ //Default to 0 if no subkey is set subkey = (subkey===undefined?0:subkey); var a = arr.slice(0), b = [], x; //For each section in the array, create an array containing whatever we are trying to sort by and our unique ID for (x in a){ b[x]=[a[x][subkey], x]; } b=b.sort(); //Wipe out all the data that's currently in arr! arr.splice(0, arr.length); for (x in b){ arr.push(a[b[x][1]]); } return arr; } 

Credo che vorrai ordinare per $ titel, quindi vorresti implementare qualcosa del genere:

 // kör funktionen när knappen med id stigande klickas $('#stigande').click(function(a,b){ arrSort($films, 0); }); // kör funktionen när knappen med id fallande klickas $('#fallande').click(function(){ arrSort($films, 0); $films.reverse(); });