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 开始,依此类推,则只需在执行之前减去一个,然后返回一个以进行更正。

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 回答