Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 - Fatal编程技术网

数组复制javascript

数组复制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

这段代码应该返回数组中第二大的数字。但是,我注意到,如果数组中存在重复的元素,则此代码不起作用。当我将数组设置为[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 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]
    或只包含一种数字
    的数组,预期的返回值是多少