2016-09-23 14 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

FYI: 'Math.max.apply (Math, numbers);' делает именно то, что вы пытаетесь сделать –

ответ

-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

В целом это считается опечаткой, подходящей для голосования, чтобы закрыть ее в качестве причины. –

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 также будет работать.

Смежные вопросы