1

まず、私は JS をやっていないので、noob の質問を事前にお詫びします。

タイトルが言うように、私はこの行を持っています:

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

基本的には、値が 1000 を超える場合は「TB」を追加し、1000 未満の場合は「GB」を追加します。50 未満の場合はテキストを完全に削除するという 3 番目の条件が必要です。

これが if/else ステートメントのようなものであることはわかりますが、それを完全にデコードして、3 番目の条件を追加する方法を理解することはできません。前もって感謝します!

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";
    }
}

あなたの3番目の状態が何であるかはわかりませんが、あなたは写真を手に入れます。

于 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
}

あなたの場合、スイッチバージョン(読みやすい)または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;
}

ここで値「true」を切り替えます。つまり、さまざまなケースを調べて、「true」(またはデフォルト) のケースを確認します。

于 2012-06-29T03:07:57.113 に答える