Javascript If-else-If函数有许多or表达式,不会循环使用所有or可能性
我根据值有条件地显示图像。该值是一个字符串。但是,它只返回第一个图像。它并没有贯穿整个函数Javascript If-else-If函数有许多or表达式,不会循环使用所有or可能性,javascript,Javascript,我根据值有条件地显示图像。该值是一个字符串。但是,它只返回第一个图像。它并没有贯穿整个函数 我试着在值周围放上括号,它确实起作用,但只检查第一个字符串 尝试使用一个等号,但没有任何改变 期望函数循环到最后,并基于该值返回图像。实际结果是它返回第一个图像。当前,每个字符串的计算结果都是true,除非它是null或未定义的。除了第一个,您不会将它们中的任何一个与值进行比较。您需要比较它们,否则,第一个if块每次都会通过 每个表达式上都缺少value==: methods: { resu
- 我试着在值周围放上括号,它确实起作用,但只检查第一个字符串
- 尝试使用一个等号,但没有任何改变
期望函数循环到最后,并基于该值返回图像。实际结果是它返回第一个图像。当前,每个字符串的计算结果都是
true
,除非它是null
或未定义的。除了第一个,您不会将它们中的任何一个与值进行比较。您需要比较它们,否则,第一个if块每次都会通过
每个表达式上都缺少value==
:
methods: {
resultImage(value) {
if (
value === 'Less likely' ||
value === 'More likely light' ||
value === 'More likely blue' ||
value === 'More likely curly'
) {
return this.low
} else if (value === 'Average chance') {
return this.medium
} else if (
value === 'Somewhat more likely' ||
value === 'Somewhat more likely brown' ||
value === 'Somewhat more likely curly'
) {
return this.mediumHigh
} else if (
value === 'More likely' ||
value === 'More likely dark' ||
value === 'More likely brown' ||
value === 'More likely straight'
) {
return this.high
}
}
}
我认为你的问题在于你没有检查值,而是检查表达式
if (
value === 'Less likely' ||
'More likely light' ||
'More likely blue' ||
'More likely curly'
)
将始终导致true,因为表达式'More like light'和其他字符串都是真实值。
我认为这将实现您想要实现的目标:
if (
value === 'Less likely' ||
value === 'More likely light' ||
value === 'More likely blue' ||
value === 'More likely curly'
)
我推荐这篇帖子:试试这样的帖子:
function resultImage(value) {
switch(value) {
case 'Less likely':
case 'Less likely':
case 'More likely curly':
return this.low
case 'Average chance':
return this.medium
case 'Somewhat more likely':
case 'Somewhat more likely brown':
case 'Somewhat more likely curly':
return this.mediumHigh
case 'More likely':
case 'More likely dark':
case 'More likely brown':
case 'More likely straight':
return this.high
default:
return null
}
}
您还可以添加一个默认案例以始终返回值。我个人更喜欢使用其他模式(告诉不要问)
以下是一个例子:
const cases = {
'Less likely': 'low',
'More likely light': 'low',
...
'Average chance': 'medium',
...
'Somewhat more likely brown': 'mediumHight',
...
};
methods: {
resultImage(value) {
return this[cases[value]];
}
}
我喜欢使用这种模式来避免多个if-else if-else语句
您可以定义一个默认值来实施此模式,如:
const cases = {
...
default: 'low' // for exemple
}
methods: {
resultImage(value) {
const caseValue = cases[value] || cases['default'];
return this[caseValue];
}
}
“value”的值是什么?解释为什么if(value===“something”| |“something”)
不会给出预期的结果(并且将始终被评估为true),这将是一个非常好的语法。谢谢
const cases = {
...
default: 'low' // for exemple
}
methods: {
resultImage(value) {
const caseValue = cases[value] || cases['default'];
return this[caseValue];
}
}