ES6のマップとセットの違い

地図

JSでのデフォルトオブジェクトの表現は{}で、これはキーと値のペアのセットですが、キーは文字列である必要があります。
Numberまたはその他のデータ型をキーとして使用するために、ES6仕様では新しいデータ型Mapが導入されています。
マップは、検索速度が非常に速い一連のキーと値のペアの構造です。マップを初期化するには、2次元配列を使用するか、空のマップを直接初期化する必要があります。

Mapを使用して、一連のトランスクリプトを実装します。

 

var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95

マップには次の方法があります。

 

var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined

キーは1つの値にしか対応できないため、キーは複数回値に入れられ、次の値は前の値を洗い流します。

var m = new Map();
m.set('Adam', 67);
m.set('Adam', 88);
m.get('Adam'); // 88

セットする

Setも、Mapと同様に、キーのセットのコレクションです。ただし、違いは、Setは値を格納せず、そのキーを繰り返すことができないことです。
セットを作成するには、入力として配列を指定するか、空のセットを直接作成する必要があります。

 

var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3

繰り返される要素は、セットで自動的にフィルタリングされます(注:番号3と文字列「3」は異なる要素です)

 

var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}

セットには次のメソッドがあります。

 

//通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果
s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}

//通过delete(key)方法可以删除元素
var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}


add(value):添加某个值,返回Set结构本身。 
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。 
has(value):返回一个布尔值,表示该值是否为Set的成员。 
clear():清除所有成员,没有返回值。

総括する

1. Mapオブジェクトは、JSONオブジェクトと同様に、キーと値のペアのコレクションですが、キーは文字列だけでなく、マップキーになる可能性のあるオブジェクトを含む他のさまざまなタイプの値にすることもできます。

var map = new Map();
var obj = { name: '小缘', age: 14 };
map.set(obj, '小缘喵');
map.get(obj); // 小缘喵
map.has(obj); // true
map.delete(obj) ;// true
map.has(obj); // false

2. Setオブジェクトは配列に似ており、メンバーの値は一意です

 

おすすめ

転載: blog.csdn.net/asteriaV/article/details/115321762