Javascript 使用jquery对数组进行升序和降序排序

Javascript 使用jquery对数组进行升序和降序排序,javascript,html,css,sorting,Javascript,Html,Css,Sorting,我正在尝试对数组进行升序和降序排序。但我似乎不知道如何正确地做到这一点。我尝试了不同的方法,但都不管用。这应该在我单击两个按钮时发生,一个id为stigandeascending,另一个id为FallandDeascending。有解决办法吗 Javascript $(document).ready(function(){ var $films = []; // ändra bakgrundsfärg för textfield $('#name').keyup(function(){

我正在尝试对数组进行升序和降序排序。但我似乎不知道如何正确地做到这一点。我尝试了不同的方法,但都不管用。这应该在我单击两个按钮时发生,一个id为stigandeascending,另一个id为FallandDeascending。有解决办法吗

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 = $("<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("<li>" + $films[i][0] + " " + $films[i][1] + "</li>");
        }

        $('#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();   
});

});

由于要对数组进行排序,而不仅仅是对一系列名称进行排序,因此需要对排序做一些稍微不同的操作

尝试使用以下内容:

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;
}
我相信您会希望按照$titel进行排序,因此您会希望实现如下内容:

// 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();   
});

由于要对数组进行排序,而不仅仅是对一系列名称进行排序,因此需要对排序做一些稍微不同的操作

尝试使用以下内容:

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;
}
我相信您会希望按照$titel进行排序,因此您会希望实现如下内容:

// 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();   
});

从代码的外观来看,$films数组是一个对象数组-我说的对吗?如果是这样,那么单独使用sort将不起作用,但这可能会有所帮助:它是一个嵌套数组。我会调查的,谢谢!或者更好的是,它是一个多维数组。从代码的外观来看,$films数组是一个对象数组-我说的对吗?如果是这样,那么单独使用sort将不起作用,但这可能会有所帮助:它是一个嵌套数组。我会调查的,谢谢!或者更好的是,它是一个多维数组。我会尝试一下,谢谢。它看起来确实像我想要的东西。它不起作用。我想这是因为我将数组存储在一个列表中。正如您所看到的,我在ul.append中使用first。只要您在追加之前对其进行排序,这应该是不相关的。这里有一个例子说明它的用途:我会尝试一下,谢谢。它看起来确实像我想要的东西。它不起作用。我想这是因为我将数组存储在一个列表中。正如您所看到的,我在ul.append中使用first。只要您在追加之前对其进行排序,这应该是不相关的。下面是它的使用示例: