Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中数字类型变量的最小值和最大值_Javascript - Fatal编程技术网

Javascript JS中数字类型变量的最小值和最大值

Javascript JS中数字类型变量的最小值和最大值,javascript,Javascript,我在研究JavaScript中的最小和最大方法,但我找不到任何解释这些方法和算法的帖子。我的猜测是,在1234这样的数值变量中,你可以通过将数字分成4个值并进行比较来得到最小值和最大值。或者将这些值添加到数组中,对该数组进行排序,并将min作为数组[0]获取。有与这些方法相关的帖子吗?Math.min和Math.max分别从传递的参数集中返回最小值和最大值。 这样,您就可以拆分数字的字符串表示形式来检索数字数组,然后对结果数组应用Math.min或Math.max方法 (函数(){ var m

我在研究JavaScript中的最小和最大方法,但我找不到任何解释这些方法和算法的帖子。我的猜测是,在1234这样的数值变量中,你可以通过将数字分成4个值并进行比较来得到最小值和最大值。或者将这些值添加到数组中,对该数组进行排序,并将min作为数组[0]获取。有与这些方法相关的帖子吗?

Math.min
Math.max
分别从传递的参数集中返回最小值和最大值。
这样,您就可以拆分数字的字符串表示形式来检索数字数组,然后对结果数组应用
Math.min
Math.max
方法

(函数(){
var minDigit,
maxDigit,
numToDigitsArray;
numToDigitsArray=函数(num){
返回(“”+Math.abs(num)).split(“”).map(函数(数字){
返回parseInt(数字);
});
};
minDigit=函数(num){
返回Math.min.apply(null,numToDigitsArray(num));
};
maxDigit=函数(num){
返回Math.max.apply(null,numToDigitsArray(num));
};
console.log(minDigit(-5343240123));
控制台日志(maxDigit(753943240123));

})();在当前源代码中,
/build/v8/src/math.js
定义了
math.min()
math.max()
,因此:

Math.min:

// ECMA 262 - 15.8.2.12
function MathMin(arg1, arg2) {  // length == 2
  var length = %_ArgumentsLength();
  if (length == 2) {
    arg1 = TO_NUMBER_INLINE(arg1);
    arg2 = TO_NUMBER_INLINE(arg2);
    if (arg2 > arg1) return arg1;
    if (arg1 > arg2) return arg2;
    if (arg1 == arg2) {
      // Make sure -0 is considered less than +0.
      return (arg1 === 0 && %_IsMinusZero(arg1)) ? arg1 : arg2;
    }
    // All comparisons failed, one of the arguments must be NaN.
    return NAN;
  }
  var r = INFINITY;
  for (var i = 0; i < length; i++) {
    var n = %_Arguments(i);
    if (!IS_NUMBER(n)) n = NonNumberToNumber(n);
    // Make sure -0 is considered less than +0.
    if (NUMBER_IS_NAN(n) || n < r || (r === 0 && n === 0 && %_IsMinusZero(n))) {
      r = n;
    }
  }
  return r;
}
// ECMA 262 - 15.8.2.11
function MathMax(arg1, arg2) {  // length == 2
  var length = %_ArgumentsLength();
  if (length == 2) {
    arg1 = TO_NUMBER_INLINE(arg1);
    arg2 = TO_NUMBER_INLINE(arg2);
    if (arg2 > arg1) return arg2;
    if (arg1 > arg2) return arg1;
    if (arg1 == arg2) {
      // Make sure -0 is considered less than +0.
      return (arg1 === 0 && %_IsMinusZero(arg1)) ? arg2 : arg1;
    }
    // All comparisons failed, one of the arguments must be NaN.
    return NAN;
  }
  var r = -INFINITY;
  for (var i = 0; i < length; i++) {
    var n = %_Arguments(i);
    if (!IS_NUMBER(n)) n = NonNumberToNumber(n);
    // Make sure +0 is considered greater than -0.
    if (NUMBER_IS_NAN(n) || n > r || (r === 0 && n === 0 && %_IsMinusZero(r))) {
      r = n;
    }
  }
  return r;
}

试试这里:你可以只做
Math.max.apply(Math,'1234'.split('')本机函数的具体实现方式是特定于浏览器的,取决于供应商,只要它们返回符合ECMA规范的结果。@adeno I打算建议提供一个关于
Math.min()
Math.max()
的好例子。你的例子和Mozilla的很相似,所以你问他们内部是如何工作的,有点不清楚?在这种情况下,请参阅上面我的说明,这取决于浏览器供应商在javascript引擎中如何实现,只要符合规范。
Math.max.apply(Math, '1234'.split(''));
// returns 4