JavaScript中有一个数字数组,其中包含未排序顺序的数字。我们的工作是编写一个函数,该函数接受此数字数组并返回一个包含两个元素的数组,即该数组的顶部两个元素(该数组的最大两个元素)。
我们必须一次性执行此操作,即,我们需要在线性时间内执行此方法,例如仅使用一个for循环,或者如果使用ES6函数,则必须确保仅使用一次并避免使用嵌套的方法增加时间复杂度。
因此,现在让我们使用Array.prototype.reduce()方法编写代码-
const arr = [23, 65, 67, 23, 2, 6, 87, 23, 45, 65, 3, 234, 3]; const topTwo = arr => { if(arr.length < 2){ return false; }; return arr.reduce((acc, val) => { if(val > acc[0]){ let t = acc[0]; acc[0] = val; acc[1] = t; }else if(val > acc[1]){ acc[1] = val; }; return acc; }, [-Infinity, -Infinity]); }; console.log(topTwo(arr));
输出结果
控制台中的输出将为-
[ 234, 87 ]