为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript 数组中的第二大元素代码错误

JavaScript 数组中的第二大元素代码错误

倚天杖 2023-01-06 11:24:02

我写这段代码是为了获得第二个最大值……它在 nums=[1,2,3,2,4] 这样的情况下有效,我得到的第二个最大值等于 3。但是如果 mu 数组是 [1,2,3, 4,5,6,7,8,9,10] 第二个最大值的输出是 8。请帮忙。


function getSecondLargest(arr){

  let uniqueArr = [ ...new Set(arr) ];

  uniqueArr.sort();

  const z= uniqueArr.length;

  return arr[z-2];

}


查看完整描述

4 回答

?
眼眸繁星

TA贡献1626条经验 获得超9个赞

试试这个


let intArray =[1,2,3,4,5,6,7,8,9,10]; 
console.log(intArray.sort((a, b) => b - a)[1]);


查看完整回答
反对 回复 2023-01-06
?
qq_遁去的一_1

TA贡献1468条经验 获得超7个赞

尝试这个:


let arr = [1,2,3,4,5,6,7,8,9,10];


function getSecondLargest(nums){

    let sort = arr.sort((a, b) => a - b);

    return sort[sort.length - 2]

}


console.log(getSecondLargest(arr));



查看完整回答
反对 回复 2023-01-06
?
慕尼黑8549860

TA贡献1579条经验 获得超11个赞

它按字母顺序对元素进行排序。尝试在排序中传递函数:


let arr1 = [1,2,3,2,4];

let arr2 = [1,2,3,4,5,6,7,8,9,10];


console.log( getSecondLargest(arr1) );

console.log( getSecondLargest(arr2) );


function getSecondLargest(arr){

  let uniqueArr = [ ...new Set(arr) ];

  uniqueArr.sort((a,b)=> a-b);

  const z= uniqueArr.length;

  return arr[z-2];

}

我建议您处理边缘情况,例如长度为 0 或 1 的数组...



查看完整回答
反对 回复 2023-01-06
?
慕的地10843

TA贡献1574条经验 获得超8个赞

它返回 8 因为sort()默认情况下 javascript 中的方法按字母顺序对数组进行排序,因此将sort()方法应用于您将返回如下内容:-


[1,10,2,3,4,5,6,7,8,9]

因此,为了按数字对它们进行排序,您必须添加这个新方法,该方法通过使用 ES6 中的箭头函数进一步简化。以下将是您更新的代码:-


function getSecondLargest(arr){

  let uniqueArr = [ ...new Set(arr) ];

  uniqueArray.sort((a,b) => a-b);

  const z= uniqueArr.length;

  return arr[z-2];

}


查看完整回答
反对 回复 2023-01-06
  • 4 回答
  • 0 关注
  • 9 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信