题目

请使用 Javscript 里的三元运算符实现一个 f(x: number): string 函数,x 的取值与返回值对应关系如下所示:

  • x < 0,返回 a
  • x > 100,返回 a
  • 0 <= x < 20,返回 b
  • 20 <= x < 80,返回 c
  • 80 <= x <= 100,返回 b

    考察点

    条件运算,三元运算符

    解答

    1. const f = (x: number): string => {
    2. return x < 0 ? 'a' : x < 20 ? 'b' : x < 80 ? 'c' : x <= 100 ? 'b' : 'a'
    3. }

    发散题目

    发散题目一:三元运算符有什么优缺点?

    发散题目一:合并返回值重复的情况

    考察点:

    三元运算符,条件运算符

    解答

    1. const f = (x: number): string => {
    2. return x < 0 || x > 100 ? 'a' : x < 20 || x >= 80 ? 'b' : 'c'
    3. }

    发散题目二:将其改写为 if-else

    考察点:三元运算符与 if-else 的相互转换
    解答:
    解法一:有 if 嵌套
    1. const f = (x: number): string => {
    2. if (x < 0) {
    3. return 'a'
    4. } else {
    5. if (x < 20 || (x >= 80 && x <= 100)) {
    6. return 'c'
    7. } else {
    8. if (x < 80) {
    9. return 'd'
    10. } else {
    11. return 'b'
    12. }
    13. }
    14. }
    15. }
    解法二:无 if 嵌套(如果写的是解法一,可以进一步提问这一解法)
    1. const f = (x: number): string => {
    2. if (x < 0) {
    3. return 'a'
    4. }
    5. if (x < 20 || (x >= 80 && x <= 100)) {
    6. return 'c'
    7. }
    8. if (x < 80) {
    9. return 'd'
    10. }
    11. return 'b'
    12. }

    发散题目三:合并重复区间

    参考资料