[英]Nesting ternary operator properly
我正在使用框架显示一个动物表,这限制了我使用单个三元运算符来显示和格式化我的文本,这个想法是:如果对象包含animalType,animalType.name和animalType.id,那么检查是否由名称+ id组成的字符串超过10个字符,截断文本,否则如果小于10,则显示整个文本,如果它们不退出,则显示空标题,以下是我将如何使用常规写入其他声明:
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 web文档,我了解到多个条件可以通过以下方式传递:
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语句中那样,如何使用三元运算符编写相同的逻辑?
我会像这样写你的情况,所以我不写一千次动物类型:
if(conditionA) {
if(conditionB) {
return value1
} else if (conditionC) {
return value2
}
} else {
return value3
}
这可以用这样的三元运算符:
return conditionA
? conditionB
? value1
: conditionC
? value2
: undefined
: value3
只需遵循这种包围方式,您可能需要调整逻辑,以便您的下一个条件始终遵循:
并且您必须准确了解括号,在您的问题中甚至还有未公开的括号! 如果您需要这样,请使用突出显示开头和结束括号的短信
condition ? value : (condition ? value : (condition ? value : (and ? so : on) ))
没有这个明确的包围,这是我的经验,它可能会失败。
在javascript中你还应该能够将你的逻辑包装成一个函数,无论你想放置三元函数只需要放入函数()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.