该代码应返回数组中的第二大数字。但是,我注意到,如果数组中有重复的元素,则此代码将不起作用。当我将数组设置为[2、3、6、6、5]时,它将返回第二个最大数字。它应该返回5作为第二大数字,而6是第一大数字。
我在else中添加了一部分代码,以查看是否可以删除重复项,但没有成功,它仍然返回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;
} console.log(getSecondLargest(nums));
答案 0 :(得分:1)
在评估secondLargest时只需测试是否相等。
const nums = [2, 3, 6, 6, 5];
function getSecondLargest(nums) {
var largest = 0;
var secondLargest = 0;
nums.forEach(n => {
if (n > largest ) {
secondLargest = largest;
largest = n;
} else if ( n > secondLargest && n !== largest ){
secondLargest = n;
}
});
return secondLargest;
}
console.log(getSecondLargest(nums));
答案 1 :(得分:1)
如果要对数组中的项目进行重复数据删除,一种简单的方法是将其转换为Set:new Set(array)
,然后根据需要从中创建一个新数组:{{1 }}。将所有内容放在一起:Array.from(set)
。
现在,从给定数组中获取第二大数字的另一种方法可能是:
类似以下内容:
Array.from(new Set(array))
答案 2 :(得分:0)
我有一个函数用于获取数组中的不同项目,如果您然后对这个不同的列表进行排序,则第二大的将是列表中的第二个项目。
const nums = [2, 3, 6, 6, 5];
const distinct = (array) =>
array
? array.reduce((results, item) => {
if (!results.some((i) => i === item)) {
results.push(item);
}
return results;
}, [])
: array;
const getSecondLargest = array => array && array.length >= 2 ? distinct(array).sort((a,b) => b - a)[1] : undefined;
console.log(getSecondLargest(nums));
答案 3 :(得分:0)
您可以首先$ kubectl get deploy test -o=jsonpath='{.spec.template.metadata.labels.customProp}'
数组,以便剩下仅包含不同值的数组。接下来,您可以过滤后的数组,filter
,然后sort
在已排序数组的第二个索引处的数字:
return