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];
  }
}