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

如何基于子对象过滤父对象?移除含缺失price产品的餐厅

过滤包含缺失price字段产品的餐厅

要实现这个需求,核心是筛选出旗下所有产品都包含有效price字段的餐厅——只要餐厅里有任何一个产品缺price,就把整个餐厅排除。

基础实现代码

const filteredRestaurants = data.filter(restaurant => {
  // 检查当前餐厅的所有菜单
  return restaurant.multiple_menus.every(menu => {
    // 检查当前菜单下的所有产品都存在price字段
    return menu.products.every(product => 'price' in product && product.price !== undefined);
  });
});

代码说明

  • Array.filter():遍历原始餐厅数组,只保留符合条件的元素
  • 两层Array.every():确保所有菜单、菜单下的所有产品都满足要求——只要有一个环节不达标,整个餐厅就会被过滤掉
  • 'price' in product && product.price !== undefined:既检查字段存在,也避免字段存在但值为undefined的情况

进阶:严格校验price为有效数字

如果需要确保price是有效的数字(排除null、NaN、字符串等无效值),可以把判断条件改成:

const filteredRestaurants = data.filter(restaurant => {
  return restaurant.multiple_menus.every(menu => {
    return menu.products.every(product => {
      return 'price' in product 
        && typeof product.price === 'number' 
        && !isNaN(product.price);
    });
  });
});

用这段代码处理你提供的示例数据,最终只会剩下「Resturant 2」,因为「Resturant 1」的沙拉菜单里有一个产品缺失price字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:15:33