复杂去重,根据数组中的对象的某一个key的value值相同去重对象数据

本文介绍了一种JavaScript解决方案,通过使用Map数据结构,针对数组中对象的storageHouseCode属性进行去重,适用于项目中快速实现对象去重操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

在得到数据之后,需要对数组中的对象进行去重`


解决方案:

根据数组中对象的某个值进行去重,
所在项目中,是根据数组对象中的storageHouseCode值相同,进行去重的。

    unique(arr) {
      // 数组中对象去重
      let map = new Map()
      arr.forEach((item, index) => {
        if (!map.has(item['storageHouseCode'])) {
          map.set(item['storageHouseCode'], item)
        }
      })
      // console.log(map, map.values(), map.keys())
      return [...map.values()]
    },
一个Map集合数组中,由于Map的数据结构本质上是键对,所以如果想要根据某些key,你需要遍历整个数组,对于每个Map,检查其某个特定的Key是否存在。如果存在,并且这个Key对应的value与其他Map中的相同,那么就可以认为这两个Map是相同的,需要除其中一个。 以下是基于Java的一个简单示例: ```java import java.util.*; public class MapDuplicatesRemoval { public static void removeDuplicates(Map<String, Object>[] maps, String keyToRemove) { Set<Map<String, Object>> uniqueMaps = new LinkedHashSet<>(); for (Map<String, Object> map : maps) { if (!uniqueMaps.contains(map)) { // 检查指定key是否已存在于唯一Map集中,如果不存在,则添加 if (!map.containsKey(keyToRemove)) { uniqueMaps.add(map); } } else { // 如果已经存在,说明有复,可以移除当前map,但这里我们仅做记录不做实际移除操作 System.out.println("Duplicate found: " + map); } } // 返回后的唯一Map集合 return uniqueMaps.toArray(new HashMap[0]); } public static void main(String[] args) { Map<String, Object>[] maps = { ... }; // 这里填充你的Map数组 Map<String, Object>[] uniqueMaps = removeDuplicates(maps, "someKey"); } } ``` 在这个例子中,`removeDuplicates`方法接收一个Map数组一个的关键字。它创建了一个LinkedHashSet来存储唯一的Map实例,因为Set不允许有复元素。 如果你希望在实际应用中删除复的Map,你可以在找到复项的地方,替换`System.out.println`为相应的移除操作,比如移除数组中的某个索引位置的地图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值