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以前的索引值。这是我的错。我被错误地理解了这个问题。我已经编辑了我的答案,请再次检查。这是我的错。我被错误地理解了这个问题。我已经编辑了我的答案,请再次检查。