Я пытаюсь найти второе по величине число в массиве чисел, но наибольшее число появляется дважды, поэтому я не могу просто удалить его из массива и выбрать новое наибольшее число.
array = [0, 3, 2, 5, 5]
(поэтому 3
является вторым по величине значением)
У меня есть этот код, в котором я могу явно вернуть 3, но он не будет работать на других массивах:
function getSecondLargest(nums) {
var sorted_array = nums.sort(function (a,b) {return a - b;});
var unique_sorted_array = sorted_array.filter(function(elem, index, self) {
return index === self.indexOf(elem);
})
return unique_sorted_array[unique_sorted_array.length - 2];
}
return unique_sorted_array[unique_sorted_array.length - 2];
Если бы я хотел сделать его более динамичным, есть ли способ, которым я мог бы определить наибольшее значение массива, а затем сравнить его с каждой итерацией массива?
Я думал, что-то вроде:
var greatestNum = sortedArray[-1]
while(greatestNum != i) do {
//check for the first number that doesn't equal greatestNum
}
Буду признателен за любую помощь.