马黑黑 发表于 2022-7-19 22:06

多分支不用条件语句行不行

当条件分支很多,还去用 if ... else ... 判断语句去处理问题,不仅显得笨拙,还容易出错,再增加条件时代码就会更冗长。所以,三四个分支可以考虑 if ... else 或 switch 语句,更多分支的可以考虑使用其它解决方案。

最近网售一批仔猪,从一个月大到半岁的都有人预定。预定页面要在客户选好后给个预算总价,让客户心里有个数。页面运行的不错,但看了一下代码,用了大量的 switch 语句,虽然逻辑清晰,却看着不舒服。于是我试着这么改写:

function amount(month,total) {
      let price = {
                1: 100,
                2: 120,
                3: 180,
                4: 240,
                5: 300,
                6:360,
      };
      return price * total;
}


函数 amount 就是总价预算,需要两个参数:month,仔猪月龄,total,预定量。

假设客户选取 4 个月大的仔猪 50 头,5个月大的30头,则:

let money = amount(4,50) + amount(5,30);
console.log(money);


这将得出 21000 的结果。

技巧:amount 函数加入了对象 price,price 的每一个键值对巧妙利用仔猪月龄做 key,单价做值,然后通过对象的方法 单价乘以头数返回总价。这么做一方面代码简洁,另一方面修改容易(比如添加其他月龄的仔猪、改变单价等)。

红影 发表于 2022-7-19 22:20

return price * total;

这里的month就直接替换成该月份对应的单价了吧。{:4_204:}

加林森 发表于 2022-7-19 22:52

来学习。

马黑黑 发表于 2022-7-19 23:13

红影 发表于 2022-7-19 22:20
return price * total;

这里的month就直接替换成该月份对应的单价了吧。

month是仔猪的月龄

马黑黑 发表于 2022-7-19 23:13

加林森 发表于 2022-7-19 22:52
来学习。

{:4_190:}

加林森 发表于 2022-7-19 23:37

马黑黑 发表于 2022-7-19 23:13


谢茶!

马黑黑 发表于 2022-7-20 07:57

本帖最后由 马黑黑 于 2022-7-20 07:58 编辑

红影 发表于 2022-7-19 22:20
return price * total;

这里的month就直接替换成该月份对应的单价了吧。
对象和数组在某些方面有共同的特征,都需要使用key来读取对象项目内容。在数组中,key指下标,比如一个数组,

let ar = ;

读取它的第二个元素内容,key 是 1:console.log(ar);

数组的构造,key 不可见,隐形存在,从 0 开始;对象的 key 则是明摆的:

let 猪 = {
    年龄: 1,
    体重: 105,
    身高: 0.47,
    姓名: '阿黑',
    性格: '腼腆内向',
    爱好: '泡温泉',
};

在上述 猪 这个构建好的对象里,每一个键值对用冒号隔开,左边的是key,右边的是健值。当我们想知道猪这个JS对象的爱好时,我们这样读取:

console.log(猪.爱好);

这会在控制台得到结果 :泡温泉

红影 发表于 2022-7-20 10:42

马黑黑 发表于 2022-7-20 07:57
对象和数组在某些方面有共同的特征,都需要使用key来读取对象项目内容。在数组中,key指下标,比如一个数 ...

嗯嗯,学习了。谢谢黑黑{:4_187:}
这个例子太搞笑了{:4_170:}

马黑黑 发表于 2022-7-20 12:07

红影 发表于 2022-7-20 10:42
嗯嗯,学习了。谢谢黑黑
这个例子太搞笑了

你是说猪对象吧{:4_170:}

加林森 发表于 2022-7-20 12:52

{:4_174:}

红影 发表于 2022-7-20 20:09

马黑黑 发表于 2022-7-20 12:07
你是说猪对象吧

是啊,猪猪喜欢泡温泉,那明明是人的享受好吧{:4_173:}

马黑黑 发表于 2022-7-20 20:41

红影 发表于 2022-7-20 20:09
是啊,猪猪喜欢泡温泉,那明明是人的享受好吧

山里的猪猪和你城里人一样待遇

红影 发表于 2022-7-20 22:48

马黑黑 发表于 2022-7-20 20:41
山里的猪猪和你城里人一样待遇

这话咋听着那么别扭{:4_173:}

马黑黑 发表于 2022-7-20 22:58

红影 发表于 2022-7-20 22:48
这话咋听着那么别扭

正常的,猪猪并不高人一等

红影 发表于 2022-7-21 21:25

马黑黑 发表于 2022-7-20 22:58
正常的,猪猪并不高人一等

你说反了吧,把人比作猪,等同起来,这太怪了{:4_173:}

马黑黑 发表于 2022-7-21 21:30

红影 发表于 2022-7-21 21:25
你说反了吧,把人比作猪,等同起来,这太怪了

你爱说佛说,佛说过,众生平等

红影 发表于 2022-7-22 19:44

马黑黑 发表于 2022-7-21 21:30
你爱说佛说,佛说过,众生平等

众生平等是对的,但还是各有各的族群和生活习性,这样才有世界的多样性啊。

马黑黑 发表于 2022-7-22 20:06

红影 发表于 2022-7-22 19:44
众生平等是对的,但还是各有各的族群和生活习性,这样才有世界的多样性啊。

多态性才精彩

红影 发表于 2022-7-22 20:56

马黑黑 发表于 2022-7-22 20:06
多态性才精彩

所以,不能把不同种类混做一谈。

马黑黑 发表于 2022-7-22 20:57

红影 发表于 2022-7-22 20:56
所以,不能把不同种类混做一谈。

爱咋咋的
页: [1] 2 3
查看完整版本: 多分支不用条件语句行不行