You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定规则实现查找数组中间元素的JavaScript函数?

数组中间元素查找函数实现

原代码问题分析

你写的代码存在几个明显问题:

  • 函数名存在拼写错误(findMidlle少了字母d)
  • 没有按照规则过滤数组中的null元素,直接用原数组长度计算索引
  • 偶数长度时的加法除以2逻辑只适用于求数字平均值,完全不匹配需求里的字符串等类型元素的返回规则
  • 没有处理空数组、全null数组等极端场景

规则提炼

结合所有示例可以推导出执行逻辑:

  1. 先过滤输入数组中所有值为null的元素,得到有效元素数组
  2. 特殊场景处理:
    • 输入数组本身为空,直接返回null
    • 过滤后有效元素数组为空,返回undefined
  3. 通用计算逻辑:有效数组长度为n时,中间元素索引为Math.floor((n - 1) / 2),返回该索引对应的元素即可

正确实现代码

function findMiddle(arr) {
  // 处理原数组为空的场景
  if (arr.length === 0) return null
  // 过滤所有null值得到有效数组
  const validArr = arr.filter(item => item !== null)
  // 处理过滤后无有效元素的场景
  if (validArr.length === 0) return undefined
  // 计算中间索引
  const midIndex = Math.floor((validArr.length - 1) / 2)
  return validArr[midIndex]
}

验证结果

所有示例运行结果均符合要求:

  • findMiddle(['a','b','c']) => 'b'
  • findMiddle(['a','b','c','d']) => 'b'
  • findMiddle(['a','b','c','d','e']) => 'c'
  • findMiddle([]) => null
  • findMiddle(['a']) => 'a'
  • findMiddle([null]) => undefined
  • findMiddle(['a',null,'c']) => 'a'
  • findMiddle(['a','b','c',null, null]) => 'b'

内容的提问来源于stack exchange,提问作者Илья Калошин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:45:05