Javascript 在函数中包含负数以查找数组中的第二大整数

Javascript 在函数中包含负数以查找数组中的第二大整数,javascript,Javascript,在这一点上,函数确实返回第二大数字,但是我不确定为什么它不适用于负数 函数findSecondLargeNumber(arr){ var firstLargeNum=0, 第二个参数m=0; 对于(变量i=0;i

在这一点上,函数确实返回第二大数字,但是我不确定为什么它不适用于负数

函数findSecondLargeNumber(arr){
var firstLargeNum=0,
第二个参数m=0;
对于(变量i=0;i
这一个呢:

函数findSecondLargeNumber(arr){
返回arr.sort(函数(a,b){
返回a-b
})[arr.length-2];
}
log(findSecondLargeNumber([-5,-3,-2,3,6,2])//返回3
这个怎么样:

函数findSecondLargeNumber(arr){
返回arr.sort(函数(a,b){
返回a-b
})[arr.长度-2];
}

log(findSecondLargeNumber([-5,-3,-2,3,6,2])//返回3
在testval上添加math.abs,您就没事了

函数findSecondLargeNumber(arr){
var firstLargeNum=0,
第二个参数m=0;

对于(var i=0;i在testval上添加math.abs,就可以了

函数findSecondLargeNumber(arr){
var firstLargeNum=0,
第二个参数m=0;
对于(var i=0;i请尝试以下解决方案:

function findSecondLargeNumber(arr){
  const sortedArray = arr.sort((v1, v2)=> v2 - v1);
  return sortedArray[1];
}
尝试以下解决方案:

function findSecondLargeNumber(arr){
  const sortedArray = arr.sort((v1, v2)=> v2 - v1);
  return sortedArray[1];
}
干净的代码尝试(尽管重新排列了数组元素)

用于在博物馆作为文物展出的浏览器

arr.sort(function(a,b){return b-a})[1];
干净的代码尝试(尽管重新排列了数组元素)

用于在博物馆作为文物展出的浏览器

arr.sort(function(a,b){return b-a})[1];
函数getSecond最大值(nums){ //完成函数 var a=nums.sort(函数(a,b){ 返回a-b }); var max=Math.max(…nums); var rev=a.reverse(); 如果(nums.length==1){ 返回nums[0]; }否则{ 对于(变量i=0;i
函数GetSecond最大值(nums){
//完成函数
var a=nums.sort(函数(a,b){
返回a-b
});
var max=Math.max(…nums);
var rev=a.reverse();
如果(nums.length==1){
返回nums[0];
}否则{
对于(变量i=0;i
???因为负数都小于零?请将两个变量初始化为
数字。负数
应该可以工作。@Pointy但答案应该基于数组中的值…否?数组中是否有任何数字小于
数字。负数
?您认为比较
的结果是什么0
-1
?不是
0
大于
-1
吗?因为负数都小于零?将两个变量初始化为
数字。负数
应该可以工作。@Pointy但答案应该基于数组中的值…否?数组中的任何数字是否小于
数字。NEG当输入数组为
[-1,-2]时,OP希望函数返回
-2
@FrankCamara抱歉我犯了一个错误,我编辑了它。我知道我可以
MDN
Math.abs
方法,但是你能为后代添加一个小的解释吗?@AntonioPavicevac Ortiz此更改不会得到你期望的答案。此函数返回第二大数值,对于数组
[-1,-2]
将是
-1
,而不是您的问题所述的
-2
。实际上,您需要做的就是将两个“大数值”变量初始化为
数字。负无穷大而不是零。@Pointy如果您查看函数,它将从0开始(不要只考虑输入数组),因此第二大数字是-1,对吗?@FrankCamara是的。OP现在已经两次更改了问题。OP希望当输入数组为
[-1,-2]时函数返回
-2
@FrankCamara抱歉我犯了一个错误,我编辑了它。我知道我可以
MDN
Math.abs
方法,但是你能为后代添加一个小的解释吗?@AntonioPavicevac Ortiz此更改不会得到你期望的答案。此函数返回第二大数值,对于数组
[-1,-2]
将是
-1
,而不是您的问题所述的
-2
。实际上,您需要做的就是将两个“大数值”变量初始化为
数字。负无穷大而不是零。@Pointy如果您查看函数,它将从0开始(不要只考虑输入数组),因此第二大数字是-1,对吗?@FrankCamara是的。OP现在已将问题更改了两次。这将得到正确的答案,但它比简单的线性传递(如OP代码)花费更多的时间,而且还会重新排列数组。@Pointy他可以复制数组。这将得到正确的答案,但会花费更多的时间这样做比像操作码这样简单的线性传递更有效,而且还可以重新排列数组。@Pointy他可以复制数组这确实有效,但arrow functi