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

如何组合使用.map与.filter实现对象数组的筛选及去重操作

map + filter 实现对象数组筛选及去重的方案

你当前的代码已经是map与filter组合实现需求的标准写法,核心逻辑拆解如下:

  • 用map完成字段筛选:遍历原对象数组,提取每个元素里的city对象,得到仅包含城市信息的中间数组
  • 用filter完成去重:通过判断当前元素索引是否等于数组中第一个同id城市的索引,过滤掉id重复的城市对象,最终得到无重复的结果

如果不想声明多余的中间变量,可以直接写成链式调用,代码更简洁:

const arrayOne = [
    {
      id: 1,
      name: "João",
      city: {
        id: 1,
        name: "Rio de Janeiro"
      }
    },
    {
      id: 1,
      name: "Pedro",
      city: {
        id: 2,
        name: "Salvador"
      }
    },
    {
      id: 1,
      name: "Tiago",
      city: {
        id: 1,
        name: "Rio de Janeiro"
      }
    }
];

const uniqueCities = arrayOne
  .map(item => item.city)
  .filter((elem, index, arr) => index === arr.findIndex(t => t.id === elem.id));

该方案适用于中小数据量的业务场景,最终得到的uniqueCities就是无重复的城市对象数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:48:00