Set操作,Map操作,数组的常规操作合集

本文介绍了如何使用JavaScript的Set和Map数据结构实现数组去重、交集和差集操作。通过示例展示了filter、some和every方法在合并和对比两个数组中的应用,以及Set的基本操作如添加、删除、查找和清空。
摘要由CSDN通过智能技术生成

1、数组对象的合集,并集,差集

let a = [{id: 1}, {id: 2}, {id: 3}, {id: 4}]
let b = [{id: 1}, {id: 22}, {id: 33}, {id: 4}]

// b数组相对于a数组的交集
let intersect = [...b].filter(item=> [...a].some(it=> it.id === item.id))  
console.log(intersect)  // [{id: 1},{id: 4}]

// a数组相对于b数组的差集
let minus = [...a].filter(item=> [...b].every(it=> it.id !== item.id))
console.log(minus) // [{id: 2},{id: 3}]

// 合并去重-并集
const map = new Map()
let arr = [...a, ...b]
let union = arr.filter((item, index) => !map.has(item.id) && map.set(item.id, index))  
console.log(union)  // [{id: 1},{id: 2},{id: 3},{id: 4},{id: 22}, {id: 33}]
console.log(map)  // map {1 => 0}, {2 => 1}, {3 => 2}, {4 => 3}, {22 => 5}, {33 => 6}
console.log(map.get(4)) // 3

2、Set的操作方法

let mySet = new Set([1, 2, 1, 3, 4, 5, 5, 6])
console.log([...mySet])  // [1,2,3,4,5,6]

// add(value):添加某个值,返回Set结构本身。
console.log([...mySet.add(8)])  // [1,2,3,4,5,6,8]

// delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
console.log(mySet.delete(1))  // true
console.log([...mySet])  // [2,3,4,5,6,8]

// has(value):返回一个布尔值,表示该值是否为Set的成员。
console.log(mySet.has(8)) // true

// clear():清除所有成员,没有返回值
console.log(mySet.clear())  // undefined
console.log([...mySet]) // []

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。所以我们可以用Set特性来进行数组去重(注:数组对象不允许)

let a = new Set([1,2,3])
let b = new Set([2,3,5])

// 并集
let union = new Set([...a, ...b])
console.log([...union])  // [1,2.3.5] 

// 交集
let intersect = new Set([...a].filter(it => b.has(it)))
console.log([...intersect])  // [2,3]

// 差集
let difference = new Set([...a].filter(it => !b.has(it)))
console.log([...difference])  // [1]

知识点:
1、[...a] 就是把set转换成array。
2、filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
3、Array.filter(it => 条件) 遍历当前数组,当遍历到的某个元素时。返回值为false的元素或被移除

3、Map数据结构操作方法

Map 数据结构,类似于对象,键值对的集合, 所有的数据都是唯一的,不会重复,每条数据都需要放在一个数组中,它本身就是一个构造函数

var map = new Map([['name', '哈哈'], ['age', 20]])

// size 数据的长度
console.log(map.size)  // 2

// set() 添加一个数据
map.set('sex', '女')

// delete() 删除一条数据
map.delete('name')

// get() 获取一条数据
console.log(map.get('sex'))  // 女

// has() 查找某条数据,返回一个布尔值
console.log(map.has(name))  // false

// clear() 删除所有数据
map.clear()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值