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

如何在JavaScript中查找JSON对象数组指定属性的最大/最小值

JavaScript获取对象数组指定属性最值的实现方案

以下是不同场景下的最优实现:

  • 简洁写法(适合小数组,代码量最低)
    直接使用Math.min/Math.max结合扩展运算符和Array.map即可实现,符合你想要的极简调用习惯:
    取最小值示例:
    const minTime = Math.min(...arr.map(item => item.time)) // 返回56
    
    取最大值示例:
    const maxTime = Math.max(...arr.map(item => item.time)) // 返回65
    
    注意:该方案会先遍历数组生成所有属性值的新数组,且扩展运算符存在参数长度上限,数组长度超过10万时不推荐使用。
  • 性能最优写法(全场景兼容,适合生产环境)
    单次遍历数组维护最值,没有额外性能损耗,可封装为通用函数直接调用:
    // 通用最值获取函数
    function getExtreme(arr, prop, isMax = false) {
      if (!arr.length) return undefined
      let result = arr[0][prop]
      for (let i = 1; i < arr.length; i++) {
        const current = arr[i][prop]
        result = isMax ? Math.max(result, current) : Math.min(result, current)
      }
      return result
    }
    
    调用示例:
    getExtreme(arr, 'time') // 取time最小值,返回56
    getExtreme(arr, 'time', true) // 取time最大值,返回65
    
    该方案仅遍历数组一次,无额外内存开销,也不存在参数溢出问题,超大数组场景下性能远优于简洁写法。
  • reduce实现(兼顾性能与代码简洁度)
    基于Array.reduce的单次遍历实现,写法精简同时没有参数上限问题:
    取最小值示例:
    const minTime = arr.reduce((prev, curr) => Math.min(prev, curr.time), arr[0]?.time)
    
    取最大值示例:
    const maxTime = arr.reduce((prev, curr) => Math.max(prev, curr.time), arr[0]?.time)
    
    若需要兼容空数组场景,取最小值时初始值可替换为Infinity,取最大值时初始值替换为-Infinity即可。

内容的提问来源于stack exchange,提问作者aloea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:24:00