如何检测JavaScript整数是否更接近另一个整数?

时间:2012-09-25 20:00:26

标签: javascript

在JavaScript中,我可能会生成一个随机数,可能是3,123,或3,001,或2790等。哪种JavaScript方法可以帮助我返回目标整数,因为这些值...

3,123,或3,001,或2790更接近3000,而不是4000或2000,或1000。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:4)

你可以对它们进行排序:

var numbers = [3123, 3001, 2790, 4000, 2000, 1000];
var target = 3000;
var closest = numbers.sort(function(a, b) {
  var a = Math.abs(a - target);
  var b = Math.abs(b - target);

  return a < b ? -1 : (a > b ? 1 : 0);
});

closest包含按3000的距离排序的数字。

或者你可以使用长单行:

var sorted = numbers.map(function(value, index) {
  return [Math.abs(value - 3000), index];
}).sort().map(function(value, index) {
  return numbers[value[1]];
});

答案 1 :(得分:2)

尝试:

var rand_num = Math.floor(Math.random() * 10000);
Math.round((rand_num) / 1000) * 1000;

如果rand_num为3123,3001或2790,它将分别减少到3.123,3.001和2.729,四舍五入为3.0并乘以变为3000。