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

如何用单个函数统计数组中在10-20区间内外的数字数量?

用单个函数统计数组中区间内/外的数字数量

你当前通过两个filter函数分别统计区间内、外数字数量的方式可行,但可以优化为单次遍历数组的实现,既减少数组遍历次数,又只用一个函数完成需求。

方法1:使用reduce高效统计

reduce方法能在遍历数组时维护一个统计对象,同时完成区间内、外的计数:

let array = [1,3,7,10,14,18,20,23,27]

function countIntervalStats(arr) {
  return arr.reduce((stats, num) => {
    num >= 10 && num <= 20 ? stats.inCount++ : stats.outCount++
    return stats
  }, { inCount: 0, outCount: 0 })
}

const { inCount, outCount } = countIntervalStats(array)
console.log(inCount, outCount) // 输出:5 4

这个函数仅遍历数组一次,相比两次filter的写法更高效,尤其在处理大数组时性能差异更明显。

方法2:基于普通循环实现

如果你更习惯直观的循环逻辑,也可以用for...of完成单次遍历统计:

let array = [1,3,7,10,14,18,20,23,27]

function getIntervalCounts(arr) {
  let inCount = 0
  let outCount = 0
  for (const num of arr) {
    if (num >= 10 && num <= 20) {
      inCount++
    } else {
      outCount++
    }
  }
  return { inCount, outCount }
}

const result = getIntervalCounts(array)
console.log(result.inCount, result.outCount) // 输出:5 4

补充:原有写法的小优化

你的inInterval和outInterval函数可以简化——filter只需要返回布尔值,无需返回元素本身,比如:

function inInterval(e){
  return e >= 10 && e <=20
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:53:01