Javascript 测验的if条件句

Javascript 测验的if条件句,javascript,conditional-statements,Javascript,Conditional Statements,我正在做一个测验,根据给出的答案,它应该返回一个字符串(向上、向下或中),我在组件的类名中添加该字符串,以显示正确的图标 谁能告诉我,我在这个逻辑上做错了什么?这两个参数(答案和id)都很好,我可以阅读它们。但是if语句忽略了它们,它直接跳到else语句(它总是给出“down”) 这就是我写的逻辑: export const checkAnswer = (answer, id) => { if ((answer === 'Nein') && (id === '0' || i

我正在做一个测验,根据给出的答案,它应该返回一个字符串(向上、向下或中),我在组件的类名中添加该字符串,以显示正确的图标

谁能告诉我,我在这个逻辑上做错了什么?这两个参数(答案和id)都很好,我可以阅读它们。但是if语句忽略了它们,它直接跳到else语句(它总是给出“down”)

这就是我写的逻辑:

export const checkAnswer = (answer, id) => {
if ((answer === 'Nein') && (id === '0' || id === '3' || id === '5')) {
  return 'up';
} else if ((answer === 'Ja') && (id === '1' || id === '2' || id === '4' || id === '6')){
  return 'up';
} else if (answer === 'Weiß nicht') {
  return 'medium';
} else {
  return 'down';
}
我感谢任何人的帮助

谢谢你们的帮助,伙计们。下面是我传递参数的代码:

questions.map(question => {
    if (checkAnswer(question.answer, question.id) === 'up') {
      correctAnswers += 1;
      debugger
    }
    if (
      (question.category === 'Effektivkosten' || 'Rentenfaktor') &&
      question.answer === 'Nein'
    ) {
      correctAnswers += 2;
    }

    if (question.winner && question.answer === 'Ja') {
      winnerAnswer = true;
    }
  });
以下是所有问题的结构:

{
    id: 0,
    category: 'Effektivkosten',
    text: 'Sind die Effektivkosten höher als 1,5%?',
    shortText: 'Über 1,5% p.A.',
    answer: '',
    options: [
      {
        id: 1,
        name: 'Ja'
      },
      {
        id: 2,
        name: 'Nein'
      },
      {
        id: 3,
        name: 'Weiß nicht'
      }
    ]
  },
这里是我读取“字符串”并将其添加到类名的表:

 <table>
                  <tbody>
                    {questions.map((question, index) => (
                      <tr key={question.id}>
                        <td className="name">
                          <strong>{question.category}:</strong>
                        </td>
                        <td className="shortName">{question.shortText}</td>
                        <td>
                          <i
                            className={`icon-thumb icon-thumb__${checkAnswer(
                              question.answer,
                              question.id
                            )}`}
                          />
                        </td>
                      </tr>
                    ))}
                  </tbody>
                </table>

{questions.map((问题,索引)=>(
{question.category}:
{问题.简短文本}
))}

我会使用includes检查多个ID

export const checkAnswer = (answer, id) => {
if ((answer === 'Nein') && ([0,3,5].includes(id))) {
   return 'up';
} else if ((answer === 'Ja') && ( [1,2,4,6].includes(id) )){
  return 'up';
} else if (answer === 'Weiß nicht') {
  return 'medium';
} else {
  return 'down';
}

您还可以使用[1,2,4,6].includes(parseInt(id))来克服类型检查

我会使用includes来检查多个id

export const checkAnswer = (answer, id) => {
if ((answer === 'Nein') && ([0,3,5].includes(id))) {
   return 'up';
} else if ((answer === 'Ja') && ( [1,2,4,6].includes(id) )){
  return 'up';
} else if (answer === 'Weiß nicht') {
  return 'medium';
} else {
  return 'down';
}

您也可以使用[1,2,4,6].includes(parseInt(id))来克服类型检查

正如评论中指出的,您使用严格的比较来检查id是否是
'1'
'2'
'3'
,但您的id实际上是数字(根据您发布的问题结构)

通过严格比较,如果输入是数字,则必须将其与数字而不是字符串进行比较

就是

export const checkAnswer = (answer, id) => {
if ((answer === 'Nein') && (id === 0 || id === 3 || id === 5)) {
  return 'up';
} else if ((answer === 'Ja') && (id === 1 || id === 2 || id === 4 || id === 6)){
  return 'up';
} else if (answer === 'Weiß nicht') {
  return 'medium';
} else {
  return 'down';
}

正如评论中指出的,您使用严格的比较来检查id是否为
'1'
'2'
'3'
,但您的id实际上是数字(根据您发布的问题结构)

通过严格比较,如果输入是数字,则必须将其与数字而不是字符串进行比较

就是

export const checkAnswer = (answer, id) => {
if ((answer === 'Nein') && (id === 0 || id === 3 || id === 5)) {
  return 'up';
} else if ((answer === 'Ja') && (id === 1 || id === 2 || id === 4 || id === 6)){
  return 'up';
} else if (answer === 'Weiß nicht') {
  return 'medium';
} else {
  return 'down';
}

也许你将id作为整数传递,并严格检查它是否与字符串匹配(5对“5”)–DragoşPaul Marinescu 16分钟前

也许你将id作为整数传递,并严格检查它是否与字符串匹配(5对“5”)–DragoşPaul Marinescu 16分钟前

请给出一个如何调用它的示例(即,您实际传递的参数)。因为代码本身似乎没有问题。可能您将
id
作为整数传递,并且严格检查它是否与
console.log中的字符串(5 vs'5')匹配(checkAnswer('Nein','0'))
返回
'up'
你好,Kamil,应该是,但实际上不是。知道为什么会这样吗?10分Drago!!非常感谢。确实,我在传递整数并试图接收字符串。它很有效!!!非常感谢。请给出一个如何调用它的示例(即,您实际传递的参数)。因为代码本身似乎没有问题。可能您正在将
id
作为整数传递,并且严格检查它是否与
console.log中的字符串(5对“5”)匹配(checkAnswer('Nein','0'))
返回
'up'
你好,卡米尔,应该是,但实际上不是。你知道为什么会这样吗?10分德拉戈!!非常感谢。的确,我在传递整数并尝试接收字符串。它很有效!!!非常感谢你。谢谢费德里科,这是对的!!谢谢大家的时间。谢谢费德里科,这是对的!!谢谢大家或者你的时间。太好了!!非常感谢你的帮助#太好了!!非常感谢你的帮助#