計算起始車站車費問題-JavaScript數組對象寫法
- 2021 年 1 月 18 日
- 筆記
- javascript, JavaScript-練習, 演算法
計算起始站車費
題目:深圳–60–廣州–50-虎門–40- -中山–36-珠海一34-澳門一89一香港以上車票費用計算,如坐車深圳到廣州60元,廣州到虎門50元,深圳到虎門就是60+50-110元其它以此類推。
請用一個函數,傳入一個起始點,和一個終點,就能計算出車費如傳入起始點虎門,終點澳門就會計算出110元
思考
- 我們首先想想,如何把每個站跟票價聯繫起來?
- 很簡單,我們把用一個對象存{city,price},每個站和每個站到下一站的票價,最後一個站存0,這樣就呈現了一定的規律了。
- 封裝一個函數,傳一個數組對象,一個始末站的對象
- 在函數裡面,我們先檢測一下起始站和終點站是否合理
- 用indexOf取得下標,然後查看是往哪一個方向。
- 用for循環遍曆數據對象,然後就可以計算出車費了
- 運行結果如下圖
以下就是我用js程式碼,寫的車票計費問題。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//數組裡存對象
var array = [
{city:'深圳', price:0},
{city:'廣州', price:60},
{city:'虎門', price:50},
{city:'中山', price:40},
{city:'珠海', price:36},
{city:'澳門', price:34},
{city:'香港', price:89}
];
var price = cheFei( array , { start : '香港' , end : '虎門'} )
console.log('香港->虎門')
console.log(price)
function cheFei(array , addr ){
var start_index = end_index = -1;
for(var i=0; i<array.length ; i++){
if(addr.start === array[i].city)
start_index = i;
if(addr.end === array[i].city)
end_index = i;
}
//如果沒找到 地址 ,返回錯誤提示
if (-1===start_index ||-1===end_index )
return console.error('404 抱歉,未找到您輸入的地址');
var price = 0;
// start_index < end_index 表示:深圳->香港 方向
if( start_index < end_index ){
for( var i=start_index+1; i<=end_index; i++ ){
price += array[i].price;
}
} else {
for(var i=start_index; i>end_index; i--){
price += array[i].price;
}
}
return price;
}
</script>
</body>
</html>