
正文
js 找数组中的最值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
背景: 2个数组以下 , 比如 [[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]
找最值的时候,我一开始想用两个 for 循环比较每一个数组中的每一个数组的大小,然后保留最大值(最小值),最后再把它们组成一个新数组。
//
function largestOfFour(arr) {
var maxArr,
temp=[], // .push()是操作数组
z;
for (var i = 0; i < arr.length; i++) {
z=arr[i][0]; // 重点... 用来比较、保存
for (var j = 0; j < arr[i].length-1; j++) { // j+1了,防止超出,得-1
if (arr[i][j+1] > z ){
z = arr[i][j+1];
}
}
temp.push(z);
}
console.log(temp);
}largestOfFour([[1114, 5, 321, 3], [13, 127, 18, 26], [322, 35, 37, 39], [13000, 1001, 857, 1]]);
缺少基础,写出上面的代码颇有曲折,参考了很久排序算法(主要是选择排序)才慢慢的写出来....
------
中间其实是做不出来了,于是我就百度, 查到了js 里是可以自己算最大值最小值的.....
就是 Math.max() Math.min()
数组要放在其中使用的话,要用 apply() 才行
他们是这样举例的...
先是举例用了用 for 循环
var arr=[5,7,9,1]
// alert(Math.max(arr)) 这样是不行的。一定要这样写
function getMax(arr){
var arrLen=arr.length;
for(var i=0,ret=arr[0];i<arrLen;i++){
ret=Math.max(ret,arr[i]);
}
return ret;
}
然后是 apply()
var arr=[5,7,9,1];
function getMax2(arr){
return Math.max.apply(null,arr);
}
...
简洁了很多..很多
然后用到我的题目中呢就是这样的
function largestOfFour(arr){
var newArr = [],
temp;
for (var i = 0; i < arr.length; i++) {
temp = Math.min.apply(null,arr[i]);
newArr.push(temp);
}
return newArr;
}
largestOfFour([[1,2,3],[5,6],[9,77]]);
还阔以, 也简洁了许多..
请多指教






