map和set

Map和Set

set

//Set 我我的認爲Set是多用來操做數組的
var array=[1,2,3,3,2,1];
//數組去重
var set=new Set(array);
console.log(set);  //{1,2,3}
//獲取長度
set.size()  //3
//添加元素
set.add(4);//添加已有元素會將原來的元素覆蓋,長度不變
console.log(set) //{1,2,3,4}
//刪除元素
set.delete(4);
console.log(set) //{1,2,3}
//將map轉換爲數組對象
set=Array.from(set);
console.log(set);//[1,2,3]
//獲取數組中最大值
var max=Math.max(...set);
console.log(max);//3
複製代碼

map

//Map
var map=new Map();
map.set("a",1);
map.set("a",3);//對一個key重複賦值時,會進行覆蓋,取最近的賦值 a=3;
map.set("b",4);
console.log(map);//{a:3,b:4}
//刪除元素
map.delete("a");
console.log(map)//{b:4}
複製代碼

set應用場景

Set和Array的區別是Set裏的每個元素都是惟一的,好比你有一個Array裏面有4個元素[1, 2, 3, 1],若是你把它轉換成Set,就變成[1, 2, 3]了。因此咱們能夠利用Set的這個特性作整數數組的去重。但要注意的是,若是你的數組是[{name: 1}, {name: 1}]這樣的包含Object的數組,那麼你把它轉換爲Set時並不能去重,由於雖然這兩個對象看起來同樣,但在Set看來,這個數組裏的兩個對象是兩個徹底不一樣的值,因此並不符合去重的要求。segmentfault

map應用場景

Map和Object很相似,但Map有一個比較特殊的應用場景。若是你在開發時不肯定鍵值對裏面的鍵的名稱,那麼你須要用Map。舉例來講,你須要動態地從MongoDB裏獲取鍵值並顯示給用戶,但也許你並不關心這些鍵值的鍵名究竟是什麼,那麼在這種狀況下,你能夠用Map,例如這樣:數組

var myMap = new Map();

var keyObj = {},
    keyFunc = function () { return 'hey'},
    keyString = "a string";

myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");

console.log(myMap.get(keyFunc));
複製代碼

僅用於我的整理,參考:bash

JS中set和map的使用場景ui

js中的map和setspa

相關文章
相關標籤/搜索