最大差异和最小差异

时间:2017-08-04 08:46:47

标签: javascript

我编写了一个函数,它返回n个给定数组中数字的最大和最小差异。它似乎工作,但我想消除零作为最小差异。我还希望能够连接两个以上的数组,输入有两个以上。

function maxAndMin(arr1,arr2){
  var maxi =0;
  var mini =0;

  var newarr = arr1.concat(arr2);

  maxi = Math.max.apply(null,newarr)-Math.min.apply(null,newarr);

 newarr = newarr.sort(function(a, b) {
  return a - b; });

   for (var i=0; i<newarr.length; i++){
      if (newarr[i+1] - newarr[i] < mini)
          mini = newarr[i+1] - newarr[i];

   }
   return [maxi, mini];
}

1 个答案:

答案 0 :(得分:-1)

function maxAndMin(...arr){
  var difference = [];
  arr.reduce((a,b)=>[...a,...b])
   .sort((a,b)=>a-b)
   .reduce((before,now)=>(difference.push(now - before),now),0);
 return [Math.max(...difference)||1,Math.min(...difference)||1];
}

您可以使用rest参数捕获数组中所有传递的数组。然后,您可以将此数组统一到一个数组,对其进行排序,并减少差异。然后简单地返回它的math.max / min。 您可以使用或运算符替换0:

0 || 1 => 1
5 || 1 => 5

In action