我编写了一个函数,它返回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];
}
答案 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