javascript中的Map和Set

Posted 低代码布道师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中的Map和Set相关的知识,希望对你有一定的参考价值。

Map类似于Object,但是和Object不同的地方是Map的key可以是任意值,常用的Map的api

  • new Map() 创建Map
  • map.set(key, value) 存储值
  • map.get(key) 取值
  • map.has(key) 判断key是否存在
  • map.delete(key) 删除key
  • map.clear() 清空
  • map.size 获取元素的数量

例如:

let map = new Map();

map.set('1', 'str1');   // a string key
map.set(1, 'num1');     // a numeric key
map.set(true, 'bool1'); // a boolean key

// remember the regular Object? it would convert keys to string
// Map keeps the type, so these two are different:
alert( map.get(1)   ); // 'num1'
alert( map.get('1') ); // 'str1'

alert( map.size ); // 3

迭代Map

let recipeMap = new Map([
  ['cucumber', 500],
  ['tomatoes', 350],
  ['onion',    50]
]);

// iterate over keys (vegetables)
for (let vegetable of recipeMap.keys()) 
  alert(vegetable); // cucumber, tomatoes, onion


// iterate over values (amounts)
for (let amount of recipeMap.values()) 
  alert(amount); // 500, 350, 50


// iterate over [key, value] entries
for (let entry of recipeMap)  // the same as of recipeMap.entries()
  alert(entry); // cucumber,500 (and so on)


recipeMap.forEach( (value, key, map) => 
  alert(`$key: $value`); // cucumber: 500 etc
);

Map的定义,可以使用数组进行初始化

// array of [key, value] pairs
let map = new Map([
  ['1',  'str1'],
  [1,    'num1'],
  [true, 'bool1']
]);

alert( map.get('1') ); // str1

可以使用对象进行初始化

let obj = 
  name: "John",
  age: 30
;

let map = new Map(Object.entries(obj));

alert( map.get('name') ); // John

可以使用Object.fromEntries将Map转换为Object

let map = new Map();
map.set('banana', 1);
map.set('orange', 2);
map.set('meat', 4);

let obj = Object.fromEntries(map.entries()); // make a plain object (*)

// done!
// obj =  banana: 1, orange: 2, meat: 4 

alert(obj.orange); // 2

Set,没有key,没有重复的值,可以使用的api

  • new Set(iterable) 创建set
  • set.add(value) 添加值
  • set.delete(value) 删除值
  • set.has(value) 值是否存在
  • set.clear() 清空值
  • set.size 返回元素的个数
    示例:
let set = new Set();

let john =  name: "John" ;
let pete =  name: "Pete" ;
let mary =  name: "Mary" ;

// visits, some users come multiple times
set.add(john);
set.add(pete);
set.add(mary);
set.add(john);
set.add(mary);

// set keeps only unique values
alert( set.size ); // 3

for (let user of set) 
  alert(user.name); // John (then Pete and Mary)

迭代set的方法

let set = new Set(["oranges", "apples", "bananas"]);

for (let value of set) alert(value);

// the same with forEach:
set.forEach((value, valueAgain, set) => 
  alert(value);
);

以上是关于javascript中的Map和Set的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript-Map和Set

javascript中的set和map

JavaScript中的Map和Set

JavaScript 中的 Map, Set, WeakMap, WeakSet

javascript中的Set和Map数据结构

Map和Set