2016-09-23 52 views
0

我正在尝试做一个函数来拾取数组中的最大数字,但似乎无法让它超过第一个数字。函数选择最大的数字

function largestNumber(numbers) { 
    var constant = 1; 
    for(i = 0; i < numbers.length; i++) { 
     if(numbers[i] > constant) { 
      constant = numbers[i]; 
     } 
     return constant;   
    } 
} 
var numbers = [3, 4, 2, 6, 45, 775, 83, 5, 7]; 

largestNumber(numbers); 
+1

因为你第一次迭代返回... – Li357

+0

^安德鲁说什么,把它从你的for循环。 – Illdapt

+2

仅供参考:'Math.max.apply(数学,数字);'''''''''''''''确实正在做你想做的事 –

回答

-1
function largestNumber(numbers) { 
    var constant = 1; 
    for (i = 0; i < numbers.length; i++) { 
     if (numbers[i] > constant) { 
      constant = numbers[i]; 
     } 
    } 
    return constant; // after iterating the entire array! 
} 
var numbers = [3, 4, 2, 6, 45, 775, 83, 5, 7]; 
console.log(largestNumber(numbers)) 
0

问题是,你早回来了。

function largestNumber(numbers) { 
 
    // return null by default 
 
    var result = null; 
 

 
    if (numbers.length) { 
 
    // if there is a value in the array, return it by default 
 
    result = numbers[0]; 
 
    for (i = 0; i < numbers.length; i++) { 
 
     if (numbers[i] > result) { 
 
     result = numbers[i]; 
 
     } 
 
    } // <= you were returning too early 
 
    } 
 
    return result; 
 
} 
 

 
var numbers = [3, 4, 2, 6, 45, 775, 83, 5, 7]; 
 
largestNumber(numbers);

+0

一般来说,这会被认为是一个适合投票的错字,并以此作为理由。 – 2016-09-23 04:39:25

1

您可以使用Math.max与传播运营商

function largestNumber(arr) { 
 
    return Math.max(...arr); 
 
} 
 
    
 
var numbers=[3,4,2,6,45,775,83,5,7]; 
 
largestNumber(numbers); 
 

 
console.log(largestNumber(numbers));

0

这里有一台发电机,它返回迄今见过的最大数量:

function *max(array) { 
    let result = -Infinity; 
    for (let v of array) yield result = v > result ? v : result; 
} 

您可以通过采取的最后一个元素发现的最大的数组:

function last(array) { return array[array.length - 1]; } 

const numbers = [3, 4, 2, 6, 45, 775, 83, 5, 7]; 

console.log(last([...max(numbers)])); 

[...]需要从发电机到一个数组结果的流转换; Array.from也可以工作。