繁体   English   中英

如何计算数组中第二大数的平方

[英]How to square the second largest number in an array

我试图在一个数组中找到第二大的数字,并将这个数字平方。

arr = [1,8,6,2,5,4,8,3,7]应该返回 49(7 的平方)

arr = [1,1]应该返回 1(1 的平方)

我试过下面的代码,它适用于第一个数组并返回 49,但在第二个带有 [1,1] 的数组上它返回 NaN。

问题在于 secondLargest 变量——它在 console.log 上返回未定义。 可能是因为我用的是 set,但我不明白为什么它不只返回 1 而不是 undefined。

var maxArea = function(height) {

    let secondLargest = Array.from([...new Set(height)]).sort((a,b) => b-a)[1]
    console.log(secondLargest);
    
    return Math.pow(secondLargest, 2);
};

Set消除了重复项,因此数组[1, 1]变成了[1] 没有第二个元素,因此在尝试访问索引1时会得到 undefined 。 由于这不是您想要的,因此不创建Set直接对数组进行排序,或者在没有第二个元素时取第一个元素。

 function maxArea(height) { const sorted = [...new Set(height)].sort((a,b) => ba); return (sorted[1]?? sorted[0]) ** 2; } console.log(maxArea([1, 1])); console.log(maxArea([1,8,6,2,5,4,8,3,7]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM