在JavaScript中使用Math.max.apply over数组时出现问题
我试图找到四个子数组中每个子数组的最大值,将每个最大值推送到一个包含所有四个最大值的新数组,然后返回该数组。当我运行这段代码时,它返回一个包含四个值的数组,但它们都为null。我做错了什么在JavaScript中使用Math.max.apply over数组时出现问题,javascript,arrays,math,max,Javascript,Arrays,Math,Max,我试图找到四个子数组中每个子数组的最大值,将每个最大值推送到一个包含所有四个最大值的新数组,然后返回该数组。当我运行这段代码时,它返回一个包含四个值的数组,但它们都为null。我做错了什么 largest = []; function largestOfFour(arr) { for (i = 0; arr.length > i; i++) { var tempSub = arr.slice(i , i + 1); largest.push(Math.max.appl
largest = [];
function largestOfFour(arr) {
for (i = 0; arr.length > i; i++) {
var tempSub = arr.slice(i , i + 1);
largest.push(Math.max.apply(Math, tempSub));
}
return largest;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]], "");
您可以使用在每个数组上运行一个函数,以获取其最大值:
function largestOfFour(arr) {
return arr.map(function(v){
return Math.max.apply(Math, v);
});
}
或者使用不是很多浏览器真正支持的浏览器:
function largestOfFour(arr) {
return arr.map(v => Math.max.apply(Math, v));
}
您可以使用在每个数组上运行一个函数,以获取其最大值:
function largestOfFour(arr) {
return arr.map(function(v){
return Math.max.apply(Math, v);
});
}
或者使用不是很多浏览器真正支持的浏览器:
function largestOfFour(arr) {
return arr.map(v => Math.max.apply(Math, v));
}
当您使用slice获取数组的一部分时,您将获得一个包含该项的数组。变量tempSub不包含像[4,5,1,3]这样的值数组,它包含像[[4,5,1,3]]这样的值数组。当您将其发送到max方法中时,它将无法获得最大值,因为您没有将值发送到该方法中,而是发送一个数组值
使用arr[i]获取数组中的项,而不是切片
此外,还应在函数内部声明变量maximum,以便在不保留以前调用的结果的情况下多次使用该函数。变量i也应该是局部变量
函数最大四个{
var最大=[];
对于变量i=0;i