JS排序的运用
2024-08-31 15:58:06
排序是一个非常实用的功能,队列也是一样实用。
有时候项目中就是会用到它。
举个例子,队列的运用,比如刷小礼物,接收方,会受到很多用户的礼物。为了公平起见,要一个个的显示出礼物效果。这个时候就需要队列了,先进先出。
把它们加入队列中,一个一个的运行。运行一个礼物效果,就移出一个队列数据。
排序呢,也会经常用到,给你一堆数据,有时候需要按照日期排序,有时候要按照销量排序,等等。把无序的数据处理成有序的。
冒泡排序,就是一个很简单的排序实现方式,数据较少的情况下,排序效率会高一些。
这里,比如获取聊天好友列表,把最近聊天的人员优先排在前面。
这样处理,
// 冒泡排序聊天信息
function sortChatList(arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j].sentTime < arr[j+1].sentTime) {
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
经过两轮比较,消息发送时间戳大的就会排在前面了,也就是最新的聊天人员会排在前面。
for (var k = 0;k<json.info.length;k++) { // 初始化
json.info[k].text = '';
json.info[k].messageId = 0;
json.info[k].sentTime = 0;
}
for (var i = 0; i < data.length;i++) {
for (var j = 0; j< json.info.length;j++) {
if (data[i].targetId == json.info[j].id) {
json.info[j].text = data[i].text;
json.info[j].messageId = data[i].messageId;
json.info[j].sentTime = data[i].sentTime;
}
}
}
json.info = sortChatList(json.info); // 排序处理
var interText = doT.template($("#info_tmpl").text());
$("#info_area").html(interText(json));
继续尝试,改造成选择排序,思路就是,查询最小的数,或者最大的数,将其排在前面。
// 选择排序
function sortChatList(arr) {
var len = arr.length;
var maxIndex, temp;
for (var i = 0; i < len - 1; i++) {
maxIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j].sentTime > arr[maxIndex].sentTime ) { //寻找最大的数
maxIndex = j; //将最大数的索引保存
}
}
temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
return arr;
}
运用才是最重要的,尼玛,其他的排序算法,真心看不懂。
最新文章
- 编写可维护的JavaScript代码
- mac系统 下 npm 安装 bower报错
- XStream使用总结
- log4j 总结 精华
- linux查看cpu、内存信息
- HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
- 一个tomcat究竟能接受多少并发
- [Angular 2] Passing data to components with &#39;properties&#39;
- EntityFramework 简单入个门
- shell 脚本实现文件对称加密
- 深入理解Python中赋值、深拷贝(deepcopy)、浅拷贝(copy)
- hdoj4685
- Docker启动mysql的坑2
- tomcat2章1
- JNI使用方法
- 中小型研发团队架构实践九:任务调度Job
- 【原】移动web资源整理(安卓、ios移动端兼容性问题归整)
- 算法笔记_187:历届试题 网络寻路(Java)
- “全栈2019”Java第一百零七章:匿名内部类与构造方法注意事项
- xshell连接Ubuntu虚拟机