使用javascript [copy]按ID排序列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用javascript [copy]按ID排序列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2399字,纯文字阅读大概需要4分钟。
内容图文
![使用javascript [copy]按ID排序列表](/upload/InfoBanner/zyjiaocheng/759/0ed15beeb9de46bd8841aa03a54daf8b.jpg)
参见英文答案 > Sorting an array of JavaScript objects by property 27个
我正在iOS上制作一个phonegap应用程序,需要按时间排序列表
我尝试将时间添加到每个li项的id,然后根据id进行排序
<ul id="test">
<li id="4112">blub</li>
<li id="1422">blaaah</li>
<li id="6640">hmmmm</li>
<li id="2221">one more</li>
</ul>
这是javascript:
$(function(){
var elems = $('#test').children('li').remove();
elems.sort(function(a,b){
return (new Date(a.id) > new Date(b.id));
});
$('#test').append(elems);
});
http://jsfiddle.net/3uYUq/1103/
我试过镀铬,它运行良好.但是,如果我尝试使用phonegap应用程序,则列表未正确排序.它没有遵循任何顺序.对此有何解决方案?
P / s:有人说在Safari上它应该是(新的日期(a.id) – 新的日期(b.id))在Safari上,但似乎它不会影响phonegap
解释有关我的phonegap代码的更多信息.此代码从db中检索记录并将其显示为html上的项目列表.
function getAllDeadlines_success(tx, results){
var len = results.rows.length;
//var s = "";
$('#allList').empty();
var tmpDueDate = '1900-01-01';
var tmpDueTime = '00:00';
for (var i=0; i<len; i++){
var allDeadline = results.rows.item(i);
var deadlineDatePart = allDeadline.duedate.split('-');
var deadlineTimePart = allDeadline.duetime.split(':');
var newDate = new Date(deadlineDatePart[0], deadlineDatePart[1] - 1 , deadlineDatePart[2], deadlineTimePart[0], deadlineTimePart[1], 0, 0);
var notiDate = new Date(newDate - 86400*1000);
//compare with current time
var result = isLate(allDeadline.duedate, allDeadline.duetime).toString();
if ( result == "true"){
$('#allList').append('<li id = "'+allDeadline.duedate+' '+allDeadline.duetime+'"><a href="#DeadlineDetail" id = "'+allDeadline.id+'" data-transition = "slide">'+ allDeadline.class +'<br>'+ allDeadline.duedate+' '+ allDeadline.duetime+'<br>'+ allDeadline.description +'</a></li>');
// window.plugin.notification.local.add({
// id : getRandomInt(0,99999),
// message: 'Dont forget to complete: '+allDeadline.description+'',
// badge: 0,
// date: notiDate
// });
}
}
$(function(){
var elems = $('#allList').children('li').remove();
elems.sort(function(a,b){
return (new Date(a.id) > new Date(b.id));
});
$('#allList').append(elems);
});
$("#allList").listview().listview('refresh');
}
解决方法:
比较函数必须返回一个整数. sort检查它是否为负,零或正,并使用它来确定应如何排序这两个元素.所以:
elems.sort(function(a, b) {
return a.id - b.id;
});
或者,在现代ES6 style:
elems.sort((a, b) => a.id - b.id);
内容总结
以上是互联网集市为您收集整理的使用javascript [copy]按ID排序列表全部内容,希望文章能够帮你解决使用javascript [copy]按ID排序列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。