找出多个数组中的最大数
右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
给出的数组如下:
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])
应该返回一个数组
largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])
应该返回 [27,5,39,1001]
.
largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]])
应该返回 [9, 35, 97, 1000000]
.
分析需求:
其实这个题很简单,我们只要把数组进行循环,然后每一项做一个排序,返回第0个就可以;
代码如下:
function largestOfFour(arr) { var newArr=[]; for(var i=0;i<arr.length;i++){ arr[i].sort(function(a,b){ return b-a; //对每一个数组进行从大到小的排序 }) newArr.push(arr[i][0]); //把每一个数组中的最大值放入新数组 } return newArr; } largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]); //返回[5,27,39,1001]
我们在数组的原型上添加一个min和max方法来判断当前数组的最大值和最小值
min方法:
Array.prototype.min = function (){ var min = this[0]; for(var i=0;i<this.length;i++){ if(this[i]<min){ //如果当前值小于前一个这个值就被当作最小值 min=this[i]; } } return min; }
max方法同理:
Array.prototype.max = function (){ var max = this[0]; for(var i=0;i<this.length;i++){ if(this[i]>max){ max=this[i]; } } return max; }
为避免冲突,可以检测一下Array的原型中有没有这个方法
if(Array.prototype.min == "undefined"){ //再添加方法 }
时间: 2024-10-14 12:42:04