正确嵌套三元运算符

时间:2019-06-23 18:52:52

标签: javascript

我正在使用框架显示带有动物的表格,这限制了我只能使用一个三元运算符来显示和设置文本格式,其思路是:如果对象包含animalType,animalType.name和animalType.id,则检查由名称+ id组成的字符串是否超过10个字符,截断文本,否则,如果其少于10个字符,则显示整个文本,如果没有退出,则显示空标题,这就是我的写法使用常规的if else语句:

if(animalType && animalType.name && animalType.id) {
  if ((animalType.name + animalType.id).length > 10) {
    return animalType.name + animalType.id.slice(0, 10) + '......'
  } else if ((animalType.name + animalType.id).length < 10) {
    return animalType.name + animalType.id
  }
} else {
  return ''
}

通过阅读mdn网络文档,我了解到可以通过多种条件传递信息:

condition1 ? value1 : condition2 ? value2

这是我使用三元运算符的尝试:

animalType && animalType.name && animalType.id
  ? (animalType.name + animalType.id).length > 10
  : (animalType.name && animalType.id).slice(0, 10)
  : (animalType.name + animalType.id).length < 10
  ? animalType.name && animalType.id
  : ''

但是我不知道如何包装三元运算符,以便它在评估了名称和id是否存在之后开始检查,就像在常规if else语句中所做的那样,如何编写相同的逻辑使用三元运算符?

2 个答案:

答案 0 :(得分:0)

我会这样写您的案子,这样我就不会写出AnimalType一千遍了:

if(conditionA) {
    if(conditionB) {
        return value1
    } else if (conditionC) {
        return value2
    }
} else {
    return value3
}

您可以这样使用三元运算符:

return conditionA
    ? conditionB
        ? value1
        : conditionC
            ? value2
            : undefined
    : value3

答案 1 :(得分:0)

只要按照这种方式进行包围,您可能必须调整逻辑,以便您的下一个条件始终遵循:,并且必须对方括号保持精确,在您的问题中甚至还有未封闭的方括号!如果您需要这样的文本编辑器,请突出显示开始和结束括号

condition ? value : (condition ? value : (condition ? value : (and ? so : on) ))

如果没有明确的括弧,根据我的经验,它可能会失败。

在javascript中,您还应该能够将逻辑包装到函数中,并且只要要将函数放在三元组的任何地方,只需将function()放在

相关问题