Javascript 使用jquery对数组进行升序和降序排序
我正在尝试对数组进行升序和降序排序。但我似乎不知道如何正确地做到这一点。我尝试了不同的方法,但都不管用。这应该在我单击两个按钮时发生,一个id为stigandeascending,另一个id为FallandDeascending。有解决办法吗 JavascriptJavascript 使用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(){
$(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。只要您在追加之前对其进行排序,这应该是不相关的。下面是它的使用示例: