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

如何用JavaScript filter实现countNextSmaller函数?修正现有代码错误

修复countNextSmaller函数并使用filter实现正确逻辑

原代码存在两个核心问题:

  • 仅检查当前元素的下一个元素,而非右侧所有元素
  • 错误地将符合条件的元素值推入结果数组,而非统计符合条件的元素数量

以下是使用filter实现的正确版本:

function countNextSmaller(numbers) {
  return numbers.map((current, index) => {
    // 获取当前元素右侧的所有元素
    const rightElements = numbers.slice(index + 1);
    // 筛选出右侧比当前元素小的元素,返回其数量
    return rightElements.filter(num => num < current).length;
  });
}

代码逻辑说明:

  • 使用map遍历原数组的每个元素,同时获取当前元素的索引index
  • 通过numbers.slice(index + 1)截取当前元素右侧的所有子数组
  • 用filter筛选出子数组中小于当前元素current的所有元素,再通过length获取筛选后的元素数量,作为当前位置的结果值

示例验证:

// 测试案例
console.log(countNextSmaller([5, 2, 6, 1])); // 输出 [2, 1, 1, 0]

解释:

  • 5右侧的元素是[2,6,1],其中2和1比5小,数量为2
  • 2右侧的元素是[6,1],其中1比2小,数量为1
  • 6右侧的元素是[1],1比6小,数量为1
  • 1右侧没有元素,数量为0

内容的提问来源于stack exchange,提问作者m.strilec

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:25:36