js怎么解决火车票排序的问题
发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,本篇内容主要讲解"js怎么解决火车票排序的问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"js怎么解决火车票排序的问题"吧!题目:一个人从北京出发,坐火
千家信息网最后更新 2025年01月29日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安全错误
数据库的锁怎样保障安全
计算机软件开发与集成
如何破坏数据库
岗山软件开发前景怎么样
t3标准版安装如何连接服务器
服务器搬迁费用
网络安全法 中国好网民
数据库服务占用cpu过高
湖南电网网络安全
互联网算法对于科技发展
网络数据库应用技术内容
用友t3修复 数据库
四川一区如何连接服务器云服务器
单招软件开发专业
海事网络安全法律
哈尔滨神州网络技术怎么样
软件开发的研发费用指什么
医院楼校园网络安全
长宁区智能网络技术开发材料
自动化网络技术参考价格
淘宝店铺定位服务器
服务器上网设置
与高校的软件开发协议书
信息来自于数据库对不对
网络安全保卫处是做什么的
数据库安装了就是连接不上找不到
宁夏网络安全事件
软件开发两层架构
阿里云服务器2020年
天津奥的斯服务器操作云空间
魔兽世界服务器分离