我正在使用框架显示带有动物的表格,这限制了我只能使用一个三元运算符来显示和设置文本格式,其思路是:如果对象包含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语句中所做的那样,如何编写相同的逻辑使用三元运算符?
答案 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()放在