Javascript 基于ASC和DESC订单中姓氏的订单数组

Javascript 基于ASC和DESC订单中姓氏的订单数组,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个按ASC和DESC顺序排序的表,但是这只对表中显示的行进行排序,因为我一次只显示15行。因此,我现在想使用数组进行排序,以便也可以使用隐藏行,但我得到一个错误,如下所示: 未捕获的TypeError:无法读取未定义的属性“length” 到目前为止我得到的信息: //用于限制患者观看的变量 var patientsToShow=15; //存储的患者列表 var storedPatientList=[{“RESPONSE”:“OK”},{“RECORDS”:{“LastName”:“A

我有一个按ASC和DESC顺序排序的表,但是这只对表中显示的行进行排序,因为我一次只显示15行。因此,我现在想使用数组进行排序,以便也可以使用隐藏行,但我得到一个错误,如下所示:

未捕获的TypeError:无法读取未定义的属性“length”

到目前为止我得到的信息:

//用于限制患者观看的变量
var patientsToShow=15;
//存储的患者列表
var storedPatientList=[{“RESPONSE”:“OK”},{“RECORDS”:{“LastName”:“Ashley”,“LastName”:“Jamie”,“LastName”:“Smith”}}];
//在第页上,选择初始化函数
$(文档).ready(函数()
{
$(“.sortable”)。单击(函数()
{
//创建新阵列以在多个点存储患者
var originalPatientList=新数组();
var newPatientList=新数组();
var patientTableRecord='';
originalPatientList=存储的患者列表;
如果(originalPatientList.RESPONSE==“确定”)
{
var clickedSorting=$(this).hasClass('orderNameByASC')?'orderNameByDESC':'orderNameByASC';
$('.sortable').removeClass('orderNameByASC').removeClass('orderNameByDESC');
$(此).addClass(单击排序);
var columnIndex=$(this).prevAll().length;
var tableBody=$(this).closest(“table”).find(“tbody”);
var tableRow=tableBody.find(“tr”);
originalPatientList.sort(函数(a,b)
{
var aText=$(a).find(“td”).eq(columnIndex).text();
var bText=$(b).find(“td”).eq(columnIndex).text();
//获取姓氏。可能需要执行更复杂的操作
//如果你想跳过中间名
变量A=aText.substr(aText.indexOf(“”));
var B=B文本子文本(B文本索引(“”));
如果(clickedSorting=='orderNameByASC')
{
返回A.localeCompare(B);
}
其他的
{
返回B.localeCompare(A);
}
});
//如果是,请循环查看旧患者列表
对于(变量i=0;i
/*隐藏患者通知*/
.patientListHiddenNotice{
显示:无;
背景色:淡黄花;
高度:50px;
文本对齐:居中;
填充物:5px;
}
/*未发现患者通知*/
.耐心倾听{
显示:无;
背景色:淡黄花;
高度:50px;
文本对齐:居中;
填充物:5px;
}
#dataTables示例th.orderNameByASC:after{
内容:'▲';
显示:内联块;
填充:0.5em;
颜色:绿色;
}
#dataTables示例th.orderNameByDESC:after{
内容:'▼';
显示:内联块;
填充:0.5em;
颜色:绿色;
}

患者
隐藏0条记录,请使用上面的搜索字段。。。
没有发现任何记录

我强烈建议您在解决此类问题时使用。如果您反对使用第三方库来解决您的问题,那么我建议您保留两个列表。一个是所有记录的完整列表,第二个是此列表的一个片段,它仅显示应用排序序列的前15个点击数。

我假设您尝试排序的数据来自数据库? 为什么不简单地对查询中的数据进行排序,然后使用AJAX更新表呢

因为只对一个子集进行排序通常不是一个好主意,这样你可以得到一个页面,其中列出“Alice、Charlie、Egon和Yann”,当你移动到下一个子集时,你会列出“Bob、Derrick、Fred和William”。这不是你想要的行为


如果整个数据集都是javascript格式的,只需使用对整个数据集进行排序,然后使用排序后的数据集重新呈现整个表。

我不想使用类似datatables的任何东西,您可以在解释的同时给出一个示例吗?不要使用
var arr=new Array()
syntax-不推荐使用
var arr=[]
@JonathanBrooks,感谢您的提示当前我使用Ajax获取数据,然后存储从数据库返回的数据,然后对存储数据的数组进行排序。