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

如何使用lodash实现对象数组按name字段不区分大小写去重

Lodash 实现不区分大小写的纯Microsoft条目去重

实现方案

核心思路是通过标准化name字段的格式,将所有仅大小写/首尾空格不同的纯Microsoft条目映射为同一个唯一标识,配合lodash的uniqBy方法实现去重。

完整代码

const _ = require('lodash');

const sourceData = [
  {
    "_id": "5e3ccb88c9b3027ef4977894",
    "name": "microsoft"
  },
  {
    "_id": "59ce020caa87df4da0ee2c77",
    "name": "Microsoft"
  },
  {
    "_id": "5e077c78bc0d663d7170ba1c",
    "name": "MICROSOFT"
  },
  {
    "_id": "608839e8d9271457814a7aa4",
    "name": "Microsoft "
  },
  {
    "_id": "5ecd46657ffa9b761a0e41cd",
    "name": "Microsoft  - MSN"
  },
  {
    "_id": "5dfb47adbc0d663d716fe25f",
    "name": "Microsoft  Alumni Foundation"
  }
];

// 处理逻辑:保留最后出现的纯Microsoft条目,和预期输出一致
const processedData = _.reverse(
  _.uniqBy(
    _.reverse([...sourceData]), 
    item => {
      // 标准化name:去首尾空格 + 转小写,消除格式差异
      const normalizedName = item.name.trim().toLowerCase();
      // 纯Microsoft条目统一返回固定标识,实现去重
      return normalizedName === 'microsoft' ? 'PURE_MS_FLAG' : normalizedName;
    }
  )
);

console.log(processedData);

逻辑说明

  • 标准化处理:对name先执行trim()去除首尾空格,再执行toLowerCase()统一转为小写,彻底消除大小写、首尾空格带来的判断差异
  • 去重规则:所有标准化后值为microsoft的条目,统一返回同一个固定标识,uniqBy会自动保留第一个遇到的该标识条目,其余直接过滤
  • 顺序调整:如果需要和示例一样保留原数组中最后出现的纯Microsoft条目,先对数组做浅拷贝后反转再处理,处理完成后反转回原顺序即可
  • 兼容性:其余带后缀的条目会根据标准化后的name判断唯一性,不同后缀的条目不会被误过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:15:04