【发布时间】:2023-03-24 07:52:01
【问题描述】:
我有一个 javascript 对象数组:
var json= [
{
"name": "xyz",
"pay": 40,
"rate": 5000,
"totals": 50000
},
{
"name": "abc",
"pay": 30,
"rate": 1400,
"totals": 100000
}
];
我已经成功地在 javascript 中的表格中设置了这个:
var mytable = $('<table></table>').attr({ id: "myTable" });
var rows = Object.keys(dataSet).length;
var cols = dataSet.length;
var tr = [];
for (var i = 0; i < rows; i++) {
var row = $('<tr></tr>').appendTo(mytable);
row.
append($('<td>').text(json[i].name)).
append($('<td>').text(json[i].pay)).
append($('<td>').text(json[i].rate)).
append($('<td>').text(json[i].totals)).appendTo(mytable);
}
$('body').append(mytable);
function sortTable(){
var $table = $('#myTable');
console.log($table);
var $rows = $('tbody > tr',$table);
$rows.sort(function(a, b){
var keyA = $('td',a).text();
var keyB = $('td',b).text();
return (keyA > keyB) ? 1 : 0;
});
$.each($rows, function(index, row){
$table.append(row);
});
} //this just sorts name alphabetically
但我需要在初始加载时按 desc 顺序对一些列进行排序,而按 asc 顺序对一些列进行排序。
姓名应按字母顺序排序,工资和费率按升序排列,总数按降序排列。我无法找出正确的方法,我无法使用 jquery 表排序器。
任何帮助将不胜感激。
【问题讨论】:
-
数据是否来自数据库?在 SQL 查询中对其进行排序可能会更容易。
-
如果没有,在创建表之前使用Javascript
Array:sort()方法对json进行排序。您可以提供一个比较函数,以适当的顺序比较属性。 -
暂时不行,我已经说 json 数组中还有五个元素。
-
顺便说一句,您要将行附加到表中两次 - 第一次是在初始化变量时,然后是在附加所有列之后。
-
您的输入数据实际上是否有多个同名条目?仅当主排序字段有重复项时,按多列排序才有意义,然后在这些字段中进行排序。
标签: javascript jquery sorting