1

首先,我不会为菜鸟问题提前道歉。

正如标题所说,我有这行:

stringValue = numericValue >= 1000 ? numericValue.toString().substr(0, numericValue.toString().length - 3) + "TB" : numericValue + "GB";

基本上,如果值超过 1000,它会附加“TB”,而在 1000 以下,它会附加“GB”。我需要第三个条件,如果它低于 50,它会完全删除文本。

我可以看到这就像一个 if/else 语句,但我不能完全解码它并弄清楚如何添加第三个条件。提前致谢!

4

6 回答 6

2

这转化为:

stringValue = function(numericValue) {
    if(thirdCondition) {
          return "something";
    }
    if(numericValue >= 1000) {
      return numericValue.toString().substr(0, numericValue.toString().length - 3) + "TB";
    }
    else {
      return numericValue + "GB";
    }
}

我不确定你的第三个条件是什么,但你明白了。

于 2012-06-29T02:43:34.467 回答
1

您可以从一点缩进中受益。像这样打破它使其更具可读性:

stringValue = 
    numericValue >= 1000 
        ? numericValue.toString().substr(0, numericValue.toString().length - 3) + "TB" 
        : numericValue + "GB";

现在,要添加另一个条件,比如 else 部分,你可以这样做:

stringValue = 
    numericValue >= 1000 
        ? numericValue.toString().substr(0, numericValue.toString().length - 3) + "TB" 
        : numericValue < 1
            ? "Negligible"
            : numericValue + "GB";
于 2012-06-29T02:44:35.370 回答
1

这应该有效:

 stringValue = numericValue >= 1000 ? numericValue.toString().substr(0, numericValue.toString().length - 3) + "TB" : (numericValue > 50 ? numericValue + "GB" : numericValue);
于 2012-06-29T02:44:49.100 回答
1
var x = 5;

var y = x > 1000 ? "big" : x > 50 ? "medium" : "small"

您可以链接三元运算符。

于 2012-06-29T02:45:19.650 回答
1
value = function(numericValue) {
  numString = numericValue.toString();
  length = numString.length -3;
  subString = numString.substr(0, length);
  if(numericValue<50) { return ""; }
  else if(numericValue< 1000) { return numString + "GB"; }
  else { return substring + "TB"; }
}

不要无缘无故地让你的代码过于复杂。保持简单,清楚地表明你打算做什么。这将防止您和其他任何人在将来维护您的代码时感到头疼。

编辑- 固定行“返回 numString + “GB””。

于 2012-06-29T02:50:35.147 回答
1

挺容易

stringValue = numericValue >= 1000 ? numericValue.toString().substr(0, numericValue.toString().length - 3) + "TB" : numericValue >= 50? numericValue + "GB":"do here your 'below 50 stuff'";

基本上它是这样工作的:

(condition)?(return case true):(return case false);

所以你也可以嵌套它

(condition1)?(return case true1):((condition2)?(return case true2):(return case false both));

在您的情况下,您有 3 个案例。还有其他几种解决方案:经典if(){} else if(){} else{}语句

switch: W3Schools JavaScript Switch 语句如下:

switch(n)
{
case 1:
  execute code block 1
  break;
case 2:
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}

在您的情况下,我会考虑使用 switch 版本(更易于阅读)或 if、else if、else。嵌套三元运算符 ' ? : ' 不容易阅读。

对于开关,您可以执行以下操作

var numericValue = //a numeric value;
switch (true) {
    case (numericValue <= 50):
        //do case below 50
        break;
    case (numericValue > 50 && numericValue <= 1000):
        //do case above 50 and below 1000
        break;
    default:
        //do case above 1000
        break;
}

Here we switch over the value 'true'. That means we look the different cases and check for the one that is 'true' (or default)

于 2012-06-29T03:07:57.113 回答