Set,Map數據結構

Set數據結構

ES6 提供了新的數據結構 Set。它相似於數組,可是成員的值都是惟一的,沒有重複的值。數組

Set自己是一個構造函數,用來生成 Set 數據結構。數據結構

const s = new Set()
s.add(1).add(2).add(1).add(3) //添加,可鏈式調用,不重複
console.log(s); //Set {1,2,3}

Set遍歷對象函數

//set對象遍歷
s.forEach(i=>console.log(i))

for(let i of s)
{
  console.log(i);
}
console.log(s.size);  //set對象長度
console.log(s.has(100)); //false
console.log(s.delete(2)); //true
console.log(s); //{1,3}
console.log(s.clear()); //清除集合內的所有內容

應用場景code

//數組去重
const arr = [1,1,1,3,2,1,4,4]
const ss = new Set(arr)
const narr = Array.from(ss) //轉化成真實數組
console.log(ss,narr);
const result = [...ss]  //轉化成真實數組
console.log(result);

Map數據結構

相似於對象,本質上都是鍵值對集合對象

原始的對象key不管什麼類型都會被轉化成字符串接口

Map是嚴格意義上的鍵值對集合,能夠使用任意類型的鍵ip

Map與對象的區別字符串

簡單的說,Object類型就是添加計算屬性,或者經過外部添加屬性,他都會轉化成string,且Object的key只容許string或symbol,而map很好解決了鍵的類型問題get

傳統的添加鍵值對string

const obj = {
  name:"mcgee"
}
obj[true] = "value"
obj[11] = "value"
obj[{a:1}] = "value"

console.log(Object.keys(obj)) //[ '11', 'name', 'true', '[object Object]' ]

任意類型的Map鍵值對

const m = new Map()
const str = {a:1};
m.set(str,"value") //key , value
m.set(11,"asd")
console.log(m);

操做方法

console.log(m.size)
console.log(m.get(str))
m.delete(11)
console.log(m);
m.clear()
console.log(m);

Map 也能夠接受一個數組做爲參數。該數組的成員是一個個表示鍵值對的數組

const map = new Map([
  ['name', '張三'],
  ['title', 'Author']
]);

map.size // 2
map.has('name') // true
map.get('name') // "張三"
map.has('title') // true
map.get('title') // "Author"

上面實際執行的是

const items = [
  ['name', '張三'],
  ['title', 'Author']
];

const map = new Map();

items.forEach(
  ([key, value]) => map.set(key, value)
);

支持 iterator接口可被for..of..

相關文章
相關標籤/搜索