数组复制javascript
这段代码应该返回数组中第二大的数字。但是,我注意到,如果数组中存在重复的元素,则此代码不起作用。当我将数组设置为[2,3,6,6,5]时,它返回最大的数字作为第二大数字。它应该返回5作为第二大,6是第一大 我在elseif中添加了部分代码,以查看是否可以删除一个副本,但它不起作用,仍然返回6而不是5数组复制javascript,javascript,Javascript,这段代码应该返回数组中第二大的数字。但是,我注意到,如果数组中存在重复的元素,则此代码不起作用。当我将数组设置为[2,3,6,6,5]时,它返回最大的数字作为第二大数字。它应该返回5作为第二大,6是第一大 我在elseif中添加了部分代码,以查看是否可以删除一个副本,但它不起作用,仍然返回6而不是5 const nums = [2, 3, 6, 6, 5]; function getSecondLargest(nums) { var firstLargest = nums[0]; var se
const nums = [2, 3, 6, 6, 5];
function getSecondLargest(nums) {
var firstLargest = nums[0];
var secondLargest = nums[0];
for(var i = 1; i < nums.length; i++){
if (nums[i] > secondLargest){
secondLargest = firstLargest;
firstLargest = nums[i];
}
else if ((secondLargest === nums[i]) || (firstLargest === nums[i])){
delete nums[I];
}
else{
nums[i] = secondLargest;
}
}
return secondLargest;
constnums=[2,3,6,6,5];
函数GetSecond最大值(nums){
var firstmax=nums[0];
var第二大=nums[0];
对于(变量i=1;i第二大){
第二大=第一大;
第一大=nums[i];
}
else如果((第二大===nums[i])| |(第一大===nums[i])){
删除nums[I];
}
否则{
nums[i]=第二大;
}
}
回报率第二大;
}
log(getsecondmagnet(nums)) 在计算第二个最大值时,只需测试是否相等
constnums=[2,3,6,6,5];
函数GetSecond最大值(nums){
var最大值=0;
var=0;
nums.forEach(n=>{
如果(n>最大值){
第二大=最大;
最大=n;
}else if(n>secondmaxist&&n!==最大){
第二大=n;
}
});
回报率第二大;
}
log(getsecondmagnet(nums))代码>在计算第二个最大值时只需测试是否相等
constnums=[2,3,6,6,5];
函数GetSecond最大值(nums){
var最大值=0;
var=0;
nums.forEach(n=>{
如果(n>最大值){
第二大=最大;
最大=n;
}else if(n>secondmaxist&&n!==最大){
第二大=n;
}
});
回报率第二大;
}
log(getsecondmagnet(nums))代码>我有一个函数,用于获取数组中的不同项,如果对该不同列表进行排序,则第二大项将是列表中的第二项
constnums=[2,3,6,6,5];
常量独立=(数组)=>
排列
? array.reduce((结果,项目)=>{
如果(!results.some((i)=>i==item)){
结果:推送(项目);
}
返回结果;
}, [])
:数组;
常量GetSecondMaximum=array=>array&&array.length>=2?不同的(数组).sort((a,b)=>b-a)[1]:未定义;
log(getsecondmagnet(nums))代码>我有一个函数,用于获取数组中的不同项,如果对该不同列表进行排序,则第二大项将是列表中的第二项
constnums=[2,3,6,6,5];
常量独立=(数组)=>
排列
? array.reduce((结果,项目)=>{
如果(!results.some((i)=>i==item)){
结果:推送(项目);
}
返回结果;
}, [])
:数组;
常量GetSecondMaximum=array=>array&&array.length>=2?不同的(数组).sort((a,b)=>b-a)[1]:未定义;
log(getsecondmagnet(nums))
如果要消除阵列中的重复项,一种简单的方法是将其转换为:新集合(阵列)
,然后,如果需要,从中创建一个新阵列:array.from(集合)
。将所有内容放在一起:Array.from(新集合(数组))
现在,从给定数组中获取第二大数的另一种方法是:
删除任何重复项李>
对数组进行排序李>
得到最后一个值李>
如下所示:
function getSecondLargest(nums) {
return Array.from(new Set(nums)).sort().slice(-2)[0]
}
如果要消除阵列中的重复项,一种简单的方法是将其转换为:新集合(阵列)
,然后根据需要从中创建新阵列:array.from(集合)
。将所有内容放在一起:Array.from(新集合(数组))
现在,从给定数组中获取第二大数的另一种方法是:
删除任何重复项李>
对数组进行排序李>
得到最后一个值李>
如下所示:
function getSecondLargest(nums) {
return Array.from(new Set(nums)).sort().slice(-2)[0]
}
您可以首先过滤数组,这样就只剩下一个只包含不同值的数组。接下来,您可以对过滤后的数组进行排序,然后返回排序数组第二个索引处的数字:
const a=[2,3,6,6,5];
常数b=[5,4,2,1,3];
常数c=[10,12,11,9,10];
常数d=[8,14,7,2,1,11,18,7,4];
函数GetSecondMaximum(arr){
常数过滤=arr.reduce((累计,el)=>{
if(累计指数(el)=-1){
累计推力(el);
}
返回累计;
}, []);
const sorted=filtered.sort((a,b)=>b-a);
返回排序[1];
}
console.log(getsecondmax(a))//应该返回5
console.log(getsecond(b))//应该返回4
console.log(getsecondmax(c))//应该返回11
console.log(getsecond(d))//应该返回14
您可以首先过滤
数组,这样就只剩下一个只包含不同值的数组。接下来,您可以对过滤后的数组进行排序,然后返回排序数组第二个索引处的数字:
const a=[2,3,6,6,5];
常数b=[5,4,2,1,3];
常数c=[10,12,11,9,10];
常数d=[8,14,7,2,1,11,18,7,4];
函数GetSecondMaximum(arr){
常数过滤=arr.reduce((累计,el)=>{
if(累计指数(el)=-1){
累计推力(el);
}
返回累计;
}, []);
const sorted=filtered.sort((a,b)=>b-a);
返回排序[1];
}
console.log(getsecondmax(a))//应该返回5
console.log(getsecond(b))//应该返回4
console.log(getsecondmax(c))//应该返回11
console.log(getsecond(d))//应该返回14
您对第二大的定义是非常不寻常的。因此,如果一个dupe没有添加它…对于一个空nums=[]
、只有一个值nums=[5]
或只包含一种数字的数组,预期的返回值是多少