js怎么解决火车票排序的问题
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇内容主要讲解"js怎么解决火车票排序的问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"js怎么解决火车票排序的问题"吧!题目:一个人从北京出发,坐火
千家信息网最后更新 2024年11月22日js怎么解决火车票排序的问题
本篇内容主要讲解"js怎么解决火车票排序的问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"js怎么解决火车票排序的问题"吧!
题目:一个人从北京出发,坐火车去旅行,途经N个城市,目的地是上海,拿到这些火车票如何对其进行排序。
分析一下这个题目的描述,本质就是数组排序啊,只不过这个数组比较特殊,数组的每一项应该是一个对象,对象有两个属性,即每张票的起始站和终点站。
所以第一步应该是构建这个数据结构,如下:
var arr =[
{ start: '肃宁', end: '长沙' },
{ start: '沧州', end: '任丘' },
{ start: '任丘', end: '肃宁' },
{ start: '长沙', end: '武汉' },
{ start: '武汉', end: '上海' },
{ start: '北京', end: '沧州' }
]
模拟出数据结构了,下一步就是将其按照顺序排列出来。解题思路大致是先找出旅行的起始站那张票,然后循环遍历这个数组,根据当前项的终点站和下一张票的起始站相同,查找出下一张火车票,从而将顺序排列出来。
如何用代码将第一张票找出来呢?可以仔细观察一下这个数据,发现如下特点:第一张车票的起始站绝对不会出现在终点站里面出现,利用这个特点将起始站的车票查找出来,代码如下(详解见注释):
// 计算出每趟车的起始站
var startarr= arr.map((e,l)=>{
return e.start;
});
// 计算出每趟车的终点站
var endarr =arr.map((e,l)=>{
return e.end
});
// 定义一个新数组
var arr2 = [];
// 利用旅行目的的起始站绝对不会出现在终点站里面,将其筛选出来,填充进数组;
for(var i=0;i if(endarr.indexOf(startarr[i])==-1){
let a= arr.filter((e,t)=>{
return e.start == startarr[i]
})
arr2.push(a[0])
}
}
之后循环遍历乱序的车票数组,每次循环取出arr2数组的最后一项,根据这一项的end属相,到乱序数组中查询start属性与其相同的车票,查找到之后将其推进arr2数组,循环遍历完,得到排序完成的数组,代码如下:
for(var i=0;i let ticket = arr2[arr2.length-1];
var tt = arr.filter((e)=>{
return e.start ==ticket.end
});
if(tt.length==1){
arr2.push(tt[0])
}
}
今天回过头来看这些代码,当然是略显稚嫩了,所以用se6的一些特性对上面代码做了一次优化,代码如下:
var arr =[
{ start: '肃宁', end: '长沙' },
{ start: '沧州', end: '任丘' },
{ start: '任丘', end: '肃宁' },
{ start: '长沙', end: '武汉' },
{ start: '武汉', end: '上海' },
{ start: '北京', end: '沧州' }
]
let a = arr.filter((e,i,arr)=>arr.map(v=>v.end).indexOf(e.start) == -1);
let b = arr.reduce((pre,cur,index,arr)=>{
return pre.concat(arr.filter((e,i)=>{
return e.start == pre[pre.length-1].end;
}));
},a)
console.log(b);
数组去重的方法:
function unique(arr){
return Array.from(new Set(arr));
}
function unique(arr){
return [...new Set(arr)];
}
function unique(arr){
var obj = {};
return arr.filter(e=>{return !obj[e]&&(obj[e]=1)})
}
到此,相信大家对"js怎么解决火车票排序的问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
数组
起始站
起始
火车
排序
代码
火车票
终点
终点站
任丘
车票
武汉
沧州
肃宁
长沙
循环
问题
数据
上海
旅行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
黑魂3 女 捏脸数据库
长沙直播软件开发前十名
服务器在路由器上映射
成都培训软件开发的学校
贵州应用软件开发价格
腾讯云的轻量服务器限制流量吗
山西商场商显触摸软件开发公司
vb怎么添加sql数据库
奉贤区智能软件开发售后服务
数据库.dat文件怎么用
es错误143 未创建数据库
服务器 并发连接
服务器报502
图文处理用服务器
浙江服务器阵列卡配置虚拟主机
vb数据库维护
数据库构成元素
航锦科技星空互联网产业会议
什么网络安全技术
设置网络安全模式上网
应用服务器和数据库服务器资源
中国移动网络安全协会
黒板报网络安全
网络安全方向考研考什么
现在最新的数据库技术有哪些
如何提高国家网络安全
沂水直播软件开发
如何用一台主机做打印机服务器
方舟生存进化付费服务器
昆明学网络技术的培训