首页 > 解决方案 > 如何使用javascript中的函数更改字符的值?

问题描述

我正在尝试创建一个接收字符并返回数字的函数。

这是我的代码:

function get (char)  {
  if (char == "A"||"a") {
    return char = 5
  } else if (char == "B"||"b") {
    return char = 4
  } else if (char == "C"||"c") {
     return char = 3
  } else if (char == "D"||"d") {
     return char = 2
  } else if (char == "F"||"f") {
     return char = 0
  }
}

但每当我对任何角色运行它时,它总是返回 5。

请提供任何帮助。

标签: javascript

解决方案


条件下的每个测试都必须是可以独立运行的完整测试。char == "A"是,但"a"不是。使用诸如&&and之类的逻辑运算符||不会改变这一点。

此外,当您返回时,您只返回一个值,而不是一个赋值。

代码必须是:

function get (char)  {
  if (char == "A"|| char == "a") {
    return 5;
  } else if (char == "B"|| char == "b") {
    return 4;
  } else if (char == "C"|| char == "c") {
     return 3;
  } else if (char == "D"|| char == "d") {
     return 2;
  } else if (char == "F"|| char == "f") {
     return 0;
  }
}

console.log(get("A"));
console.log(get("b"));
console.log(get("C"));
console.log(get("d"));
console.log(get("f"));

但是,为了简单起见,通常在测试之前将输入转换为大写或小写,然后您只需测试字符串而不是大小写:

function get (char)  {
  char = char.toLowerCase();
  if (char == "a") {
    return 5;
  } else if (char == "b") {
    return 4;
  } else if (char == "c") {
     return 3;
  } else if (char == "d") {
     return 2;
  } else if (char == "f") {
     return 0;
  }
}

console.log(get("A"));
console.log(get("b"));
console.log(get("C"));
console.log(get("d"));
console.log(get("f"));

或者,如果您正在寻找一种更紧凑的方式来获得此结果,从而if/then首先消除对的需求,您可以简单地返回数组中匹配的索引位置

let scores = ["f","","d","c","b","a"];
function get (char)  {
  return scores.indexOf(char.toLowerCase());
}

console.log(get("A"));
console.log(get("b"));
console.log(get("C"));
console.log(get("d"));
console.log(get("f"));


推荐阅读