尝试在javascript数组中查找第二大值

尝试在javascript数组中查找第二大值,javascript,arrays,sorting,Javascript,Arrays,Sorting,我试图找到数组中的第二大值,但我的代码返回数组中的第二小值。有没有指点我在哪里找不到它?假设代码只是在数组中向后循环,匹配任何小于最高值且“小于”最高值的值 函数getSecond最大值(nums){ 设sNums=nums.sort(); 设max=sNums.length-1; 对于(设i=sNums.length;i>0;i--){ 如果(sNums[i]n2-n1)[1]; } log(GetSecond最大([10,20,40,30,80,90])您可以按降序对其排序,然后取第二项

我试图找到数组中的第二大值,但我的代码返回数组中的第二小值。有没有指点我在哪里找不到它?假设代码只是在数组中向后循环,匹配任何小于最高值且“小于”最高值的值

函数getSecond最大值(nums){ 设sNums=nums.sort(); 设max=sNums.length-1; 对于(设i=sNums.length;i>0;i--){ 如果(sNums[i]log(getSecondMaximum([8,7,9,4,5,6,3,2.10,22,42101])您可以通过降序对其进行排序并获取第二项

函数getSecond最大值(nums){ 返回nums.sort((n1,n2)=>n2-n1)[1]; }
log(GetSecond最大([10,20,40,30,80,90])您可以按降序对其排序,然后取第二项

函数getSecond最大值(nums){ 返回nums.sort((n1,n2)=>n2-n1)[1]; }
log(GetSecond最大([10,20,40,30,80,90])好的,我的建议-ES6救援

请参阅其他答案并说明原始代码不起作用的原因

const getsecondmaxist=numArr=>Array.from(new Set(numArr))//生成唯一项的数组
.sort((a,b)=>b-a)[1];//按数字降序排序

console.log(GetSecond最大([8,7,9,4,5,6,3,2.10,22,42101]))
好的,我的建议-ES6救援

请参阅其他答案并说明原始代码不起作用的原因

const getsecondmaxist=numArr=>Array.from(new Set(numArr))//生成唯一项的数组
.sort((a,b)=>b-a)[1];//按数字降序排序


log(getSecondMaximum([8,7,9,4,5,6,3,2.10,22,42101])
如果要对数组进行排序,最好按降序正确排序,然后只获取第二个元素-这将是第二大数字。例如,
let sNums=nums.sort((a,b)=>b-a)然后返回
sNums[1]
我为您制作了一个工作片段。请以后也这样做错误也是
let max=sNums.length-1它是一个索引而不是一个值——您可能需要考虑<代码>号码.Max安全性整数除非您只选择注释中的超级简单方法above@Jayce444如果输入包含多个最大数字,例如[0、2、3、10、10],则这并不能解决问题@mplungjan是相关的,因为他们以后可能会遇到它,但不是OP现在面临的问题,因为他们的列表中没有两位数。如果要对数组进行排序,那么最好按降序正确排序,然后只获取第二个元素-这将是第二大数字。例如,
let sNums=nums.sort((a,b)=>b-a)然后返回
sNums[1]
我为您制作了一个工作片段。请以后也这样做错误也是
let max=sNums.length-1它是一个索引而不是一个值——您可能需要考虑<代码>号码.Max安全性整数除非您只选择注释中的超级简单方法above@Jayce444如果输入包含多个最大数字,例如[0、2、3、10、10],则这并不能解决问题@mplungjan是相关的,因为他们以后可能会面对它,但不是OP现在面临的问题,因为他们的列表中没有两位数。如果输入包含多个最大的数字,例如[0,2,3,10,10]@Francisco,我已经更新了答案。你的算法有效,但正如我在5月评论中所说的那样,@Tino正在寻求他的算法方面的帮助,而不是一个不同的算法来解决他的问题。他的算法是正确的,但有一些错误可以解释。@Francisco,更新了我的答案以查找并修复Tino的代码。@Ayaz,是的,但保持正确的排序:让sNums=nums.sort((a,b)=>a-b);否则,对于2位数字,它将不起作用。如果输入包含多个最大数字(例如[0,2,3,10,10]),这并不能解决问题。Francisco,我已更新了答案。您的算法起作用,但正如我在5月评论中所说的那样,@Tino正在寻求有关其算法的帮助,而不是解决其问题的其他算法。他的算法是正确的,但有一些错误可以解释。@Francisco,更新了我的答案以查找并修复Tino的代码。@Ayaz,是的,但保持正确的排序:让sNums=nums.sort((a,b)=>a-b);否则,对于2位数字,它将不起作用。