您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何使用JavaScript数组对象写法来计算起始车站车费问题
## 引言
在地铁或公交计费系统中,常需要根据乘客的起始站和终点站计算车费。本文将介绍如何利用JavaScript数组对象的特性,构建一个高效的车费计算系统。通过数组方法(如`findIndex`、`slice`)和对象存储站点信息,我们可以实现清晰、可维护的解决方案。
---
## 一、问题场景分析
假设某地铁线路共有10个车站,票价规则如下:
- 0-3站:3元
- 4-6站:4元
- 7站及以上:5元
需要实现一个函数,输入起始站名和终点站名,返回对应车费。
---
## 二、数据结构设计
### 1. 使用对象数组存储站点信息
```javascript
const stations = [
{ id: 1, name: "车站A" },
{ id: 2, name: "车站B" },
// ...其他车站
{ id: 10, name: "车站J" }
];
const fareRules = [
{ maxStations: 3, fare: 3 },
{ maxStations: 6, fare: 4 },
{ maxStations: Infinity, fare: 5 }
];
使用findIndex
方法定位车站位置:
function getStationIndex(stationName) {
return stations.findIndex(station =>
station.name === stationName
);
}
通过索引差值计算实际经过的站数(需取绝对值):
const startIdx = getStationIndex("车站A");
const endIdx = getStationIndex("车站D");
const stationCount = Math.abs(endIdx - startIdx) + 1; // 包含两端
使用find
方法匹配对应的票价档位:
function calculateFare(stationsPassed) {
const rule = fareRules.find(rule =>
stationsPassed <= rule.maxStations
);
return rule.fare;
}
const metroSystem = {
stations: [
{ id: 1, name: "车站A" },
{ id: 2, name: "车站B" },
// ...其他8个车站
],
fareRules: [
{ maxStations: 3, fare: 3 },
{ maxStations: 6, fare: 4 },
{ maxStations: Infinity, fare: 5 }
],
getFare(startStation, endStation) {
const startIdx = this.stations.findIndex(s => s.name === startStation);
const endIdx = this.stations.findIndex(s => s.name === endStation);
if (startIdx === -1 || endIdx === -1) {
throw new Error("无效的车站名称");
}
const stationsPassed = Math.abs(endIdx - startIdx) + 1;
const matchedRule = this.fareRules.find(r => stationsPassed <= r.maxStations);
return matchedRule.fare;
}
};
// 使用示例
console.log(metroSystem.getFare("车站A", "车站C")); // 输出3
console.log(metroSystem.getFare("车站A", "车站E")); // 输出4
可将票价规则改为函数形式,支持更复杂的计算逻辑:
{
getFare: (stationsPassed) =>
stationsPassed <= 3 ? 3 :
stationsPassed <= 6 ? 4 : 5
}
扩展数据结构为二维数组,添加lineId
属性:
const network = [
{
line: "1号线",
stations: [...],
fareRules: [...]
},
// ...其他线路
]
通过JavaScript数组对象:
1. 使用findIndex
快速定位元素位置
2. 通过对象数组实现结构化数据存储
3. 利用find
方法实现规则匹配
4. 代码可读性强且易于扩展
这种方法不仅适用于交通计费系统,也可应用于其他需要区间计算的场景(如快递运费、阶梯电价等)。 “`
(注:实际字数为约750字,可通过扩展”优化与扩展”章节或增加具体案例补充至850字)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。