這是我參與8月更文挑戰的第四天,活動詳情查看:8月更文挑戰」markdown
承接上文,繼續,今天的集合和字典介紹。數據結構
一種無序且惟一的數據結構。app
在ES6中就有集合,名Set。post
集合的經常使用操做:去重、判斷某元素是否在集合中、求交集等等...ui
const arr = [1,1,2,2,3,3]
const arr2 = [...new Set(arr)]
console.log(arr2)
// [1, 2, 3]
複製代碼
const set = new Set(arr)
const has = set.has(2)
console.log(has)
// true
複製代碼
const set = new Set([1, 2])
const set2 = new Set([2, 3])
const set3 = [...set].filter(item => set2.has(item))
console.log(set3)
// [2]
複製代碼
const set = new Set([1, 2])
const set2 = new Set([2, 3])
const set3 = [...set].filter(item => !set2.has(item))
console.log(set3)
// [1]
複製代碼
使用 Set
對象:new、add、delete、has、size
url
迭代 Set
:多種迭代方法、Set
與 Array
互轉、求交集/差集spa
迭代 Set
的 key
3d
const mySet = new Set([1,2,3,4,5])
for (let key of mySet) console.log(key);
// 1 2 3 4 5
複製代碼
Set
的 value
const mySet = new Set([1,2,3,4,5])
for (let key of mySet.values) console.log(key);
// 1 2 3 4 5
複製代碼
Set
的 key 和 value
const mySet = new Set([1,2,3,4,5])
for (let [key, value] of mySet.entries())
console.log(key, value);
// 1 1 2 2 3 3 4 4 5 5
複製代碼
咱們能夠發現
Set
的key 和 value
是同樣的。code
Set 轉 Array
const mySet = new Set([1,2,3,4,5])
const myArr = [...mySet]
const myArr2 = Array.from(mySet)
複製代碼
與集合相似,字典也是一種存儲惟一值的數據結構,但它是以 鍵值對
的形式來存儲。orm
在ES6中就有集合,名Map。
字典的經常使用操做:鍵值對的增刪改查。
const map = new Map()
// 增
map.set('你', '好')
// 刪
map.delete('你')
map.clear() // 清空
// 改
map.set('你', '很差')
// 查
map.get('你')
複製代碼
時間複雜度都是 O(1)。
function intersection(nums1: number[], nums2: number[]): number[] {
const map = new Map()
nums1.forEach(e => {
map.set(e, true)
})
const res = []
nums2.forEach(e => {
if(map.get(e)) {
res.push(e)
map.delete(e)
}
})
return res
};
複製代碼
今天就到這裏,明天見!