JavaScript:如何使用三元条件传递边缘案例
我如何在这里实现一些可能发生的边缘情况 //边缘案例 如果JavaScript:如何使用三元条件传递边缘案例,javascript,arrays,reactjs,if-statement,Javascript,Arrays,Reactjs,If Statement,我如何在这里实现一些可能发生的边缘情况 //边缘案例 如果mediaType是undefined它应该返回undefined或infinity,如果mediaType是xs它应该返回当前实现的xs //代码当前实现 function getCurrentBreakpoint(mediaType) { const mediaTypes = ["xs", "sm", "md", "lg", "xl", "infinity"]; return mediaTypes[mediaTypes.ind
mediaType
是undefined
它应该返回undefined
或infinity
,如果mediaType
是xs
它应该返回当前实现的xs
//代码当前实现
function getCurrentBreakpoint(mediaType) {
const mediaTypes = ["xs", "sm", "md", "lg", "xl", "infinity"];
return mediaTypes[mediaTypes.indexOf(mediaType) - 1];
}
这里有任何帮助。您只需执行以下操作即可检查mediaType是否未定义
if (!mediaType) {
/* ... */
}
调用函数的上下文不清楚,但如果希望返回未定义的(我认为这不是一个很好的做法),可以执行以下操作:
if (!mediaType) {
return mediaType
}
编辑:用户将帖子和标题更改为与三元文本一起使用
那就是
return !mediaType ? mediaType : /* whatever */
如果是另一种方式,并且希望始终定义它,则可以使用二进制条件:
return mediaType && /* whatever */
只需执行以下操作,即可检查mediaType是否未定义
if (!mediaType) {
/* ... */
}
调用函数的上下文不清楚,但如果希望返回未定义的(我认为这不是一个很好的做法),可以执行以下操作:
if (!mediaType) {
return mediaType
}
编辑:用户将帖子和标题更改为与三元文本一起使用
那就是
return !mediaType ? mediaType : /* whatever */
如果是另一种方式,并且希望始终定义它,则可以使用二进制条件:
return mediaType && /* whatever */
可能的解决方案:
function getCurrentBreakpoint(mediaType) {
const mediaTypes = ["xs", "sm", "md", "lg", "xl", "infinity"];
return mediaType=="xs"?"xs":mediaTypes[mediaTypes.indexOf(mediaType) - 1]?mediaTypes[mediaTypes.indexOf(mediaType) - 1]:"infinity";
}
可能的解决方案:
function getCurrentBreakpoint(mediaType) {
const mediaTypes = ["xs", "sm", "md", "lg", "xl", "infinity"];
return mediaType=="xs"?"xs":mediaTypes[mediaTypes.indexOf(mediaType) - 1]?mediaTypes[mediaTypes.indexOf(mediaType) - 1]:"infinity";
}
您可以使用数组#查找:
函数getCurrentBreakpoint(mediaType){
const mediaTypes=[“xs”、“sm”、“md”、“lg”、“xl”、“infinity”];
返回mediaTypes.find(mt=>mt==mediaType);
}
log(getCurrentBreakpoint('xs'));
log(getCurrentBreakpoint('foo'));
log(getCurrentBreakpoint())代码>您可以使用数组#查找
:
函数getCurrentBreakpoint(mediaType){
const mediaTypes=[“xs”、“sm”、“md”、“lg”、“xl”、“infinity”];
返回mediaTypes.find(mt=>mt==mediaType);
}
log(getCurrentBreakpoint('xs'));
log(getCurrentBreakpoint('foo'));
log(getCurrentBreakpoint())代码>试试这个
function getCurrentBreakpoint(mediaType) {
const mediaTypes = ["xs", "sm", "md", "lg", "xl", "infinity"];
const index = mediaTypes.indexOf(mediaType);
if(index !== -1){
return mediaTypes[index];
}
return "infinity";
}
或
试试这个
function getCurrentBreakpoint(mediaType) {
const mediaTypes = ["xs", "sm", "md", "lg", "xl", "infinity"];
const index = mediaTypes.indexOf(mediaType);
if(index !== -1){
return mediaTypes[index];
}
return "infinity";
}
或
@AakashChauhan从xs
到无限
@AakashChauhan从xs
到无限
@jenero它应该只使用三元运算符。@TanmoySarkar-为什么?你在问题中说你想用“if/else”来形容我的坏习惯。我必须简单地使用它,因为我以前用switch
和if-else
条件尝试过这一点!媒体类型?mediaType:mediaTypes[mediaTypes.indexOf(mediaType)-1];它因xs
类型而中断。@jenero它应该只使用三元运算符。@TanmoySarkar-为什么?你在问题中说你想用“if/else”来形容我的坏习惯。我必须简单地使用它,因为我以前用switch
和if-else
条件尝试过这一点!媒体类型?mediaType:mediaTypes[mediaTypes.indexOf(mediaType)-1];它因xs
type而中断。@TanmoySarkar我能知道该场景吗?当前代码不会返回mediaType以前的索引值。@TanmoySarkar我能知道该场景吗?当前代码不会返回mediaType以前的索引值。这是我的错。我被错误地理解了这个问题。我已经编辑了我的答案,请再次检查。这是我的错。我被错误地理解了这个问题。我已经编辑了我的答案,请再次检查。