3

奇妙に聞こえますが、今のところこれが必要です。実際には、次のような配列があります。

var arr = new Array(123, 432, 98, 227, 764);
var max = Math.max.apply(Math, arr); //calculate max = 764
var min = Math.min.apply(Math, arr); //calculate min = 123

ここで、最小値と最大値に基づいていくつかの範囲を作成する必要があります:

 100 - 200 // as the min is 123 (range 100 ~ 200) 
 201 - 300
 301 - 400
 401 - 500
 501 - 600
 601 - 700
 701 - 800 // as the min is 764 (range 700 ~ 800)

範囲を作成することは単なるループの問題です。しかし、最小値と最大値の範囲を計算すると、次のように実装されました。

function integerRound (digit) {
    var i = 0, msb; 
    while( digit > 0 ) {
      msb = digit % 10;
      digit = Math.floor( digit / 10 );
      i++;
    }
    while ( i > 1 ) {
      msb = msb + '0';
      i--;
    };
    return msb;
}

var lowerMin = integerRound(min); // 100
var lowerMax = integerRound(max); // 700

私の質問は - javascript または jQuery でそれを行う良い方法はありますか?

4

2 に答える 2

5

このユースケースは本質的に何世紀にもわたって分類されていることを考えると、無関係な部分を単純に削除できない理由はありますか?

century = value - (value % 100)

範囲を 201 などから開始する必要がある場合は、実行する前に 1 を減算し、1 を戻して修正します。

value -= 1;
century = value - (value % 100) + 1
于 2012-11-25T14:20:05.620 に答える
4

これはどう:

var max = parseInt(Math.max.apply(Math, arr) / 100) * 100;
var min = parseInt(Math.min.apply(Math, arr) / 100) * 100

最初に数値を 100 で除算して小数点の前の有効桁数のみを取得し、parseInt を使用して切り捨て (小数点以下のすべての桁を削除) してから、再度 100 を掛けて値を正しい大きさに戻します。

于 2012-11-25T14:18:37.923 に答える