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

如何基于城市与市场双重条件过滤嵌套pages对象数组?

如何同时基于城市和市场过滤Pages数组?

我已经实现了基于单个城市(如/rome/)过滤pages数组的逻辑,能返回包含该城市的所有页面。现在需要实现同时匹配指定城市及该城市下指定市场的过滤逻辑,仅返回包含指定城市且该城市下存在指定市场的页面。

示例Pages数组

const pages = [
    {
      id: 1,
      name: 'Meals',
      startDate: '2022-11-09 10:32:00',
      endDate: '2022-11-16 10:32:00',
      cities: {
        rome: ['supermarket'],
      },
    },
    {
      id: 2,
      name: 'Deals',
      startDate: '2022-11-24 11:01:00',
      endDate: '2022-12-01 11:01:00',
      cities: {
        napoli: ['supermarket', 'minimarket'],
        rome: ['supermarket'],
      },
    },
    {
      id: 3,
      name: 'Toys',
      startDate: '2022-11-24 11:01:00',
      endDate: '2022-12-01 11:01:00',
      cities: {
        rome: ['minimarket'],
        venice: ['supermarket', 'minimarket'],
      },
    }
];

已实现的城市过滤代码

const city = 'rome';
const pagesFilterCity = pages.filter((item) => {
  return item.cities.hasOwnProperty(city);
});

问题:尝试的市场过滤逻辑不符合需求

我写的这段代码会遍历所有城市的所有市场,无法关联指定城市和对应的市场,比如会错误地把id=3的页面筛选出来(虽然venice有supermarket,但rome下并没有):

const market = 'supermarket';
const pagesFilterMarket = pages.filter((item) => {
  return Object.values(item.cities)
    .flat()
    .some((item) => item === market);
});

正确的过滤逻辑

需要同时满足两个条件:

  1. 页面的cities对象包含指定城市
  2. 该城市对应的市场数组包含目标市场

实现代码如下:

const city = 'rome';
const market = 'supermarket';

const filteredPages = pages.filter(item => {
  // 先确认存在指定城市,再检查该城市下的市场列表
  return item.cities.hasOwnProperty(city) && item.cities[city].includes(market);
});

期望输出结果

过滤/rome/supermarket/后,应得到以下结果:

[
    {
      id: 1,
      name: 'Meals',
      startDate: '2022-11-09 10:32:00',
      endDate: '2022-11-16 10:32:00',
      cities: {
        rome: ['supermarket'],
      },
    },
    {
      id: 2,
      name: 'Deals',
      startDate: '2022-11-24 11:01:00',
      endDate: '2022-12-01 11:01:00',
      cities: {
        napoli: ['supermarket', 'minimarket'],
        rome: ['supermarket'],
      },
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:00:28