【发布时间】:2019-08-05 19:29:06
【问题描述】:
我试图在一个数字数组中找到第二大的数字,但最大的数字出现了两次,所以我不能只是从数组中删除它并选择新的最大数字。
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
}
任何帮助将不胜感激。
【问题讨论】:
-
数组所有元素都相等的情况需要处理吗?或者当数组长度小于 2 时?
-
这不是必需的,但这可能对将来查找此内容的任何人都有好处。
标签: javascript arrays while-loop