Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中查找数组中具有重复项的第二大元素_Javascript_Arrays_Javascript Objects - Fatal编程技术网

在javascript中查找数组中具有重复项的第二大元素

在javascript中查找数组中具有重复项的第二大元素,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我有数组来查找第二大元素,包括重复值,请查找下面的示例 const arr= [1,2,5,5,6] 预期结果应为: [5,5] 我尝试了map和math.max,但我坚持了逻辑问题。请帮助我下面的代码片段可以帮助你们 const arr=[1,2,5,5,6] 常量最大值=数学最大值(…arr) 常量newArr=arr.filter(元素=>元素!==max) const newMax=Math.max(…newArr) const secondmaxist=arr.filter(e

我有数组来查找第二大元素,包括重复值,请查找下面的示例

const arr= [1,2,5,5,6] 
预期结果应为:

[5,5]

我尝试了map和math.max,但我坚持了逻辑问题。请帮助我下面的代码片段可以帮助你们

const arr=[1,2,5,5,6]
常量最大值=数学最大值(…arr)
常量newArr=arr.filter(元素=>元素!==max)
const newMax=Math.max(…newArr)
const secondmaxist=arr.filter(element=>element==newMax)

log(第二大)
下面的代码片段可以帮助您

const arr=[1,2,5,5,6]
常量最大值=数学最大值(…arr)
常量newArr=arr.filter(元素=>元素!==max)
const newMax=Math.max(…newArr)
const secondmaxist=arr.filter(element=>element==newMax)

log(第二大)
这里有一个更简单的方法,但是就大数据的性能而言,它可能不是最好的方法

const ar=[1,2,5,5,6]
secmax=Math.max(…ar.filter((n,i)=>Math.max(…ar)!=n))
res=ar.filter(n=>n==secmax)

log(res)
这里有一个更简单的方法,但是就大数据的性能而言,它可能不是最好的方法

const ar=[1,2,5,5,6]
secmax=Math.max(…ar.filter((n,i)=>Math.max(…ar)!=n))
res=ar.filter(n=>n==secmax)

console.log(res)
使用集合来提取唯一值会大大缩短代码

var-arr=[1,5,2,5,4,8];
var uniqueValues=[…新集合(arr)].sort((a,b)=>b-a);
var secondHighest=唯一值[1];//0为最大值,1为次高值,以此类推。
var result=arr.filter(x=>x==secondHighest);

请记住,在访问结果时应该进行一些尽职调查(如果使用空数组或具有单个重复值的数组输入代码会发生什么情况?这里没有介绍很多情况)

使用集合提取唯一值会大大缩短代码

var-arr=[1,5,2,5,4,8];
var uniqueValues=[…新集合(arr)].sort((a,b)=>b-a);
var secondHighest=唯一值[1];//0为最大值,1为次高值,以此类推。
var result=arr.filter(x=>x==secondHighest);

请记住,在访问结果时应该进行一些尽职调查(如果使用空数组或具有单个重复值的数组输入代码会发生什么情况?这里没有介绍很多情况)

您可以对值进行分组,对数组进行排序,然后获得第二个数组

const
数组=[1,2,5,5,6],
结果=对象
.values(array.reduce((r,v)=>(r[v]=[…(r[v]| |[]),v],r),{}))
.sort(([a],[b])=>b-a)
[1];

控制台日志(结果)您可以对值进行分组并对数组进行排序,然后获得第二个数组

const
数组=[1,2,5,5,6],
结果=对象
.values(array.reduce((r,v)=>(r[v]=[…(r[v]| |[]),v],r),{}))
.sort(([a],[b])=>b-a)
[1];

控制台日志(结果)请添加您的尝试,以便我们可以修复它。请访问,查看和。做一些研究,搜索相关话题等;如果您遇到问题,请发布您的尝试,并使用
[]
代码段编辑器记录输入和预期输出。如果数组为[5,5,5,5]?请添加您的尝试,以便我们可以修复它。请访问,查看和。做一些研究,搜索相关话题等;如果您遇到问题,请发布您的尝试,使用
[]
代码段编辑器记录输入和预期输出。如果数组是[5,5,5,5]?但是这对数组
const arr=[1,2,5,5,7,7,7,6]
有效吗?将返回
[6]
哦,是的……很抱歉,它工作正常,mybad。。。。这里的问题和要求令人困惑,但这是否适用于数组
常量arr=[1,2,5,5,7,7,6]
?将返回
[6]
哦,是的……很抱歉,它工作正常,mybad。。。。这里的问题和要求令人困惑您应该指出,如果阵列足够大,可能会影响性能:我们也在对阵列中不感兴趣的部分进行排序。但我同意:这是一种更简单、更干净的方法。@A.Chiesa我补充道,谢谢你的支持feedback@A.Chiesa我已经修复了代码,感谢您指出,如果数组足够大,可能会影响性能:我们也在对数组中不感兴趣的部分进行排序。但我同意:这是一种更简单、更干净的方法。@A.Chiesa我补充道,谢谢你的支持feedback@A.Chiesa我已经修复了代码,谢谢你指出这一点