gpt4 book ai didi

javascript - 排序功能不在升序和降序之间切换

转载 作者:行者123 更新时间:2023-11-28 07:01:41 24 4
gpt4 key购买 nike

我目前正在开发一个表,它用纯 js 和 jQuery 对猫数据进行排序。我快完成了。我不知道如何让我的表标题按升序和降序排序。我尝试了各种方法,包括设置 bool 变量。有些类似:

//pseudo code
var ascending;
if ascending = true
var sortedData = cats.sort(function(a,b){return (a.country < b.country) ? -1 : 1;});
else ...

目前,我的应用程序按字母顺序对每列进行排序,但不会反向排序。这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=Windows-1252">

</head>
<body>
<div id="catTable"></div>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>


function renderData(cats){
var output='<table id="indextable" border="1" cellpadding="10" cellspacing="0" style="border-collapse:collapse;">';
output+="<thead>"
output+="<tr>";
output+="<th> HeadShot </th>";
output+="<th><button onclick='getSortedBreedData()'>Breed</button></th>";
output+="<th><button onclick='getSortedCountryData()'>Country</button></th>";
output+="<th><button onclick='getSortedCoffeeData()'>CoffeePreference</button></th>";
output+="</tr>";
output+="</thead>"

for (var i in cats) {
output+="<tbody>"

output+="<tr>";
output+="<td><img src='" + cats[i].picture+"' alt='missing cat picture'></td>"
output+="<td>" + cats[i].breed + "</td>"
output+="<td>" + cats[i].country + "</td>"
output+="<td>" + cats[i].coffeePreference + "</td>"
output+="</tr>";
output+="</tbody>"

}
output+="</table>";
document.getElementById("catTable").innerHTML=output;
}



function getData(){
$.getJSON('cats.json', function(cats) {
var cats = cats;
renderData(cats);
});
}

function getSortedCountryData(){
$.getJSON('cats.json', function(cats) {
var cats = cats;
sortData(cats,'country');
});
}
function getSortedBreedData(){
$.getJSON('cats.json', function(cats) {
var cats = cats;
sortData(cats,'breed');
});
}
function getSortedCoffeeData(){
$.getJSON('cats.json', function(cats) {
var cats = cats;
sortData(cats,'coffeePreference');
});
}

function sortData(cats, element){
switch(element) {
case 'breed':
var sortedData = cats.sort(function(a,b){return (a.breed < b.breed) ? -1 : 1;});
renderData(cats);
break;
case 'country':
var sortedData = cats.sort(function(a,b){return (a.country < b.country) ? -1 : 1;});
renderData(cats);
break;
case 'coffeePreference':
var sortedData = cats.sort(function(a,b){return (a.coffeePreference < b.coffeePreference) ? -1 : 1;});
renderData(cats);
default:
renderData(cats);
}

}




getData();

</script>
</body>
</html>

任何帮助或建议将不胜感激。

最佳答案

要反向排序,代码应该是

 cats.sort(function(a,b){return (a.country < b.country) ? 1 : -1;});

请注意,1 和 -1 是相反的。

您可以更新 sortData 函数以接收排序方向的附加参数。

function sortData(cats, element, direction)

并使用

cats.sort(function(a,b){return (a.country < b.country) ? -1*direction : 1*direction;});

并使用

sortData(cats, element, 1) or sortData(cats, element, -1) 

升序或降序

关于javascript - 排序功能不在升序和降序之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com