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

如何通过一次Map循环从对象数组提取多个扁平化数组

从对象数组一次遍历提取去重的扁平化数组

要实现单次遍历就拆分出type和deal_type的去重数组,使用Array.reduce是最优方案,它能在一次循环内完成数据收集与去重,避免多次遍历的冗余操作。

实现代码

let list = [
    {
        "name": "namee 1",
        "type": "type 1",
        "deal_type": "dealtype1"
    },
    {
        "name": "namee 2",
        "type": "type 2",
        "deal_type": "dealtype2"
    },
    {
        "name": "namee 3",
        "type": "type 3",
        "deal_type": "dealtype3"
    },
    {
        "name": "namee 1",
        "type": "type 1",
        "deal_type": "dealtype1"
    }
];

// 一次遍历完成数据收集与去重
const { types, dealTypes } = list.reduce((acc, item) => {
    acc.types.add(item.type);
    acc.dealTypes.add(item.deal_type);
    return acc;
}, { types: new Set(), dealTypes: new Set() });

// 转换为普通数组
const type = Array.from(types);
const deal_type = Array.from(dealTypes);

console.log(type); // ["type 1", "type 2", "type 3"]
console.log(deal_type); // ["dealtype1", "dealtype2", "dealtype3"]

说明

  • 借助reduce的累加器维护两个Set集合,利用Set自动去重的特性过滤重复值
  • 遍历过程中把每个对象的type和deal_type分别加入对应集合,仅需一次循环
  • 最后通过Array.from()将Set转换为普通数组,得到目标格式的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:45:35