数组元素去重-利用map中的key去重

本文介绍了一种使用Golang中的map数据结构进行数组元素去重的方法。通过将数组元素作为map的key,利用其唯一性特性来过滤掉重复项,最后将map的keys转换回切片,实现高效去重。

数组元素去重-利用map中的key去重

下面为大家介绍下,如何利用map中的key去重,以golang为例:

func DeleteRepeat(list []string) []string {
	mapdata := make(map[string]interface{})
	if len(list) <= 0 {
		return nil
	}
// 利用key的唯一性,将key对应的value置为true,同时将重复的数组元素过滤
	for _, v := range list {
		mapdata[v] = "true"
	}
	var datas []string
// 将mapdata中的key,拼接在新的切片中
	for k, _ := range mapdata {
		if k == "" {
			continue
		}
		datas = append(datas, k)
	}
	return datas
}

 

### 使用 JavaScript 的 Map 实现数组对象的 在 JavaScript 中,`Map` 是一种数据结构,它可以存储键值对,并允许任何类型的键。通过 `Map` 可以轻松实现数组对象的操作。以下是基于提供的引用内容以及专业知识的具体实现方式。 #### 基于 Map数组对象逻辑 当处理包含多个对象的数组时,可以通过对象中的某个唯一属性(如 `id`)作为键来判断是否存在复项。如果存在,则忽略该对象;否则将其加入到 `Map` 中[^1]。最终可以从 `Map` 提取所有的值并转换回数组形式。 ```javascript // 示例输入数组 const arr = [ { id: 1, name: "Alice" }, { id: 2, name: "Bob" }, { id: 1, name: "Charlie" }, // 复项 ]; // 创建一个新的 Map 对象用于存储唯一的对象 let map = new Map(); for (let item of arr) { map.set(item.id, item); // 如果有相同的 key(id),则会被覆盖 } // 将 Map 转换为数组 arr = [...map.values()]; console.log(arr); ``` 上述代码片段展示了如何使用 `Map` 来除具有相同 `id` 属性的对象。对于每一个对象,它都会被存入 `Map` 中,其中 `item.id` 作为键,而整个对象作为对应的值。由于 `Map` 不允许多个相同的键,因此实现了自动的效果[^3]。 #### reduce 方法的应用 除了直接循环外,还可以借助 `reduce()` 函数完成同样的功能: ```javascript const arr = [ { id: 1, name: "Alice" }, { id: 2, name: "Bob" }, { id: 1, name: "Charlie" } ]; const result = arr.reduce((acc, curr) => { if (!acc.map.has(curr.id)) acc.map.set(curr.id, curr); return acc; }, { map: new Map() }); const uniqueArray = [...result.map.values()]; console.log(uniqueArray); ``` 这里我们创建了一个累加器对象 `{ map: new Map() }` ,并通过每次迭代更新这个 `Map` 结构,最后再提取其值形成新的无数组[^2]。 #### 总结 无论是采用简单的 `for...of` 循环还是更函数式的 `reduce()` 方法,核心思路都是利用 `Map` 数据结构不可复性的特点来进行过滤。这种方法不仅高效而且易于理解,在实际开发中有很高的应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值