计算起始车站车费问题-JavaScript数组对象写法

  • A+
所属分类:Web前端
摘要

题目:深圳–60–广州–50-虎门–40- -中山–36-珠海一34-澳门一89一香港以上车票费用计算,如坐车深圳到广州60元,广州到虎门50元,深圳到虎门就是60+50-110元其它以此类推。
请用一个函数,传入一个起始点,和一个终点,就能计算出车费如传入起始点虎门,终点澳门就会计算出110元
思考


计算起始站车费

题目:深圳--60--广州--50-虎门--40- -中山--36-珠海一34-澳门一89一香港以上车票费用计算,如坐车深圳到广州60元,广州到虎门50元,深圳到虎门就是60+50-110元其它以此类推。
请用一个函数,传入一个起始点,和一个终点,就能计算出车费如传入起始点虎门,终点澳门就会计算出110元

思考

  • 我们首先想想,如何把每个站跟票价联系起来?
    • 很简单,我们把用一个对象存{city,price},每个站和每个站到下一站的票价,最后一个站存0,这样就呈现了一定的规律了。
  • 封装一个函数,传一个数组对象,一个始末站的对象
  • 在函数里面,我们先检测一下起始站和终点站是否合理
  • 用indexOf取得下标,然后查看是往哪一个方向。
  • 用for循环遍历数据对象,然后就可以计算出车费了
  • 运行结果如下图

计算起始车站车费问题-JavaScript数组对象写法

以下就是我用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>