返回数组中的前两个元素 JavaScript
我们有一个 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 ]
广告