違い: 1. Set は「set」構造を指しますが、Map は「dictionary」構造を指します; 2. Set は要素を「[value, value]」の形式で格納しますが、Map は要素を格納します"[値, 値]" の形式で格納されます。 "[キー, 値]" の形式で格納されます。 3. Map は get() を使用してキーで特定の値を見つけて返すことができますが、set はできません。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
簡単な説明:
セットとディクショナリの違い:
ES6 new one A の形式で要素を格納します。新しいデータ構造は配列に似ていますが、メンバーは一意で順序付けされておらず、重複する値はありません。
Set 自体は、Set データ構造を生成するために使用されるコンストラクターです。
Set オブジェクトを使用すると、プリミティブ値でもオブジェクト参照でも、あらゆるタイプの一意の値を保存できます。
const s = new Set() [1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x)) for (let i of s) { console.log(i) // 1 2 3 4 } // 去重数组的重复对象 let arr = [1, 2, 3, 2, 1, 1] [... new Set(arr)] // [1, 2, 3]
注: Set に値を追加する場合、型変換は行われないため、`5` と `"5"` は 2 つの異なる値になります。 Set は 2 つの値が異なるかどうかを内部的に決定します。使用されるアルゴリズムは「同じ値とゼロの等価性」と呼ばれ、**完全等価** 演算子 (`===`) に似ています。主な違いは * *`NaN` はそれ自体と等しいですが、完全等価演算子は `NaN` がそれ自体と等しくないものとみなされます。 **
let set = new Set(); let a = NaN; let b = NaN; set.add(a); set.add(b); set // Set {NaN} let set1 = new Set() set1.add(5) set1.add('5') console.log([...set1]) // [5, "5"]
操作メソッド:
add(value): 新しい、配列へのプッシュと同等。
delete(value): コレクション内の値が存在する場合はそれを削除します。
has(value): コレクションに value が存在するかどうかを判断します。
clear(): コレクションをクリアします。
Traversal メソッド: Traversal メソッド (トラバーサル順序は挿入順序)
keys(): コレクション内のすべてのキーを含む反復子を返します。
values(): コレクション内のすべての値を含むイテレータを返します。
entries(): Set オブジェクト内のすべての要素を含むキーと値のイテレータを返します。
forEach(callbackFn, thisArg): コレクション メンバーに対して callbackFn 操作を実行するために使用されます。thisArg パラメーターが指定されている場合、コールバック内の this はこのパラメーターになります。戻り値。
const m = new Map() const o = {p: 'haha'} m.set(o, 'content') m.get(o) // content m.has(o) // true m.delete(o) // true m.has(o) // false
#キーで特定の値を検索できません
##「辞書」構造を参照します
[キー、値]、キー値とキー名が矛盾しています
マップは get() を使用してキーによって特定の値を検索し、返すことができます
以上がes6セットとマップの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。