You need to enable JavaScript to run this app. JavaScript如何遍历嵌套对象筛选价格高于指定值的可售菜品
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何遍历嵌套对象筛选价格高于指定值的可售菜品

JS嵌套遍历实现符合条件的菜品筛选

针对有Python开发基础的使用者,整个遍历逻辑和你熟悉的多层嵌套for循环完全等价,只需要顺着给定的对象层级逐层访问、加判断即可,不需要复杂的语法。

核心数据层级梳理

先明确待遍历对象的访问路径,避免遍历错位:

  • 最外层菜单对象的核心数据入口是foodmenu.sections:所有餐区的集合,为数组结构
  • 每个餐区对象包含两个关键属性:title(餐区名称,对应结果字符串的前缀部分)、items(当前餐区下的菜品列表,为数组结构)
  • 每个菜品对象包含三个展示/判断必需的属性:title(菜品名称)、available(是否可售)、price(菜品价格)

可直接运行的函数实现

function findPriceAbove(priceThreshold, targetMenu) {
  const abovePriceArray = [];
  // 第一层遍历:遍历所有餐区
  for (const section of targetMenu.sections) {
    const sectionName = section.title;
    // 第二层遍历:遍历当前餐区下的所有菜品
    for (const dish of section.items) {
      // 匹配条件:菜品可售 且 价格高于设定阈值
      if (dish.available && dish.price > priceThreshold) {
        // 拼接为要求格式的字符串
        const resultStr = `${sectionName}-${dish.title}(${dish.price})`;
        abovePriceArray.push(resultStr);
      }
    }
  }
  return abovePriceArray;
}

效果验证

将题目中提供的foodmenu对象传入函数,设置价格阈值为5,函数返回结果为:

[
  'App-Snicker(12)',
  'App-Donuts(11)',
  'FullMeal-Chinese Chicken(14)'
]

和Python语法的对应参考

帮你快速适配JS的语法差异,减少认知负担:

  • JS遍历数组推荐使用*for...of*语法,和Python的for 元素 in 列表逻辑完全一致,不需要像之前草稿那样用Object.entries做无意义的对象键值对转换
  • 多条件逻辑判断用*&&*代替Python的and
  • 带变量的字符串拼接可以用反引号包裹的模板字符串实现,和Python的f-string语法逻辑一致
  • 访问对象属性直接用.操作符即可,比如section.title就等价于Python里的section['title']
  • JS中判断对象自有属性的hasOwnProperty方法在这里不需要使用,因为我们是顺着确定的属性路径访问,不是遍历未知的对象键值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 22:15:03