我正在尝试执行以下代码:
function oldestAges(ages){
if (ages == []){
return [0,0];
}else{
var max = Math.max.apply(null, ages);
ages.splice(ages.indexOf(max), 1);
var max2 = Math.max.apply(null, ages);
return [max2,max];
}
}
但是,当将[]作为年龄进行测试时,预期值为'[0,0]',而是:'[-Infinity,-Infinity]'
此外,有没有更简单的方法来完成相同的任务?我问,因为使用R可以以更少的行数获得相同的结果。我对JavaScript还是一无所知。
答案 0 :(得分:1)
您可以按降序对数组进行排序,以使前两个元素包含最高值。
ages.sort((a, b) => b - a);
现在ages[0]
和ages[1]
包含两个最大的数字。
答案 1 :(得分:1)
一种简单的方法(不确定最佳方法):
const input = [5, 150, 2, 8, 58, 4];
const result = input.sort((x, y) => y - x).slice(0, 2);
console.log(result);
答案 2 :(得分:1)
ages.length == 0
是您可以用来查看数组中元素的数量是否为零的方法。
您的代码在您说if (ages == [])
时出错。
尝试一下
function oldestAges(ages){
if (ages.length == 0){
return [0,0];
}else{
var max = Math.max.apply(null, ages);
ages.splice(ages.indexOf(max), 1);
var max2 = Math.max.apply(null, ages);
return [max2,max];
}
}