千家信息网

js怎么解决火车票排序的问题

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"js怎么解决火车票排序的问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"js怎么解决火车票排序的问题"吧!题目:一个人从北京出发,坐火
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 互联网科技网 互联网佳科技有限公司 云信互联网科技有限公司 港股互联网科技股 互联网科技的 科技与互联网发展 亿策互联网科技 奇酷互联网络科技公司 恒生科技互联网指数分析 互联网科技产品 江苏南京365互联网科技 青岛中康互联网医疗科技有限公司 温州喔噻互联网科技有限公司 阿里巴巴算科技企业还是互联网 玉溪互联网科技怎么选 深圳市罗太互联网科技有限公司 互联网企业科技类企业如何做账 艺电能源互联网科技有限公司招聘 银川新华互联网科技学校原画 科技和互联网行业的特点 安徽鑫晟辉互联网科技 九亚互联网科技 云电互联网科技 奇酷互联网络科技公司 世界互联网科技公司市值排名 南通创西澳互联网科技有限公司 富国互联网金融科技混合基金 好易买互联网科技 互联网领先科技成果宣传视频 广东猫王互联网科技有限公司电话
0