Javascript 测验的if条件句
我正在做一个测验,根据给出的答案,它应该返回一个字符串(向上、向下或中),我在组件的类名中添加该字符串,以显示正确的图标 谁能告诉我,我在这个逻辑上做错了什么?这两个参数(答案和id)都很好,我可以阅读它们。但是if语句忽略了它们,它直接跳到else语句(它总是给出“down”) 这就是我写的逻辑:Javascript 测验的if条件句,javascript,conditional-statements,Javascript,Conditional Statements,我正在做一个测验,根据给出的答案,它应该返回一个字符串(向上、向下或中),我在组件的类名中添加该字符串,以显示正确的图标 谁能告诉我,我在这个逻辑上做错了什么?这两个参数(答案和id)都很好,我可以阅读它们。但是if语句忽略了它们,它直接跳到else语句(它总是给出“down”) 这就是我写的逻辑: export const checkAnswer = (answer, id) => { if ((answer === 'Nein') && (id === '0' || i
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分德拉戈!!非常感谢。的确,我在传递整数并尝试接收字符串。它很有效!!!非常感谢你。谢谢费德里科,这是对的!!谢谢大家的时间。谢谢费德里科,这是对的!!谢谢大家或者你的时间。太好了!!非常感谢你的帮助#太好了!!非常感谢你的帮助#