使用 JavaScript 通过递归查找数组的中间元素


我们需要编写一个数组函数,假设函数名为 findMiddle,该函数返回数组中中间的元素,而不访问其长度属性,也不使用任何内置的循环。如果数组包含奇数个元素,则返回一个中间元素,或者,如果数组包含偶数个元素,则返回一个包含两个中间元素的数组。

那么,让我们为该函数编写代码。正如你已经猜到的那样,我们将利用递归查找这些元素。递归函数的代码为:

示例

const arr = [1, 2, 3, 4, 5, 6, 7];
const array = [1, 2, 3, 4, 5, 6, 7, 8];
const findMiddle = (arr, ind = 0) => {
   if(arr[ind]){
      return findMiddle(arr, ++ind);
   };
   return ind % 2 !== 0 ? [arr[(ind-1) / 2]] : [arr[(ind/2)-1],
   arr[ind/2]];
};
console.log(findMiddle(arr));
console.log(findMiddle(array));

输出

控制台中的输出为:

[ 4 ]
[ 4, 5 ]

更新于:2020-08-25

372 次浏览

开启你的 职业生涯

完成课程即可获得认证

立即开始
广告