新しい es6 データ構造とは何ですか?
新しい構造は次のとおりです: 1. 一意の値を表す関数構造であるシンボル 2. 配列に似た「セット」構造を参照するセット。非反復データ; 3. WeakSet、Set と同様、内部データは重複値を持つことができません; 4. Map、マッピング関係を格納できる「辞書」構造を指します。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
ES6 新しいデータ構造
1、シンボル
シンボル
はES6 One
の新しい基本データ型の は関数です。 Symbol
関数から返される各 Symbol
値は一意であり、symbol
値はオブジェクト属性の識別子として機能し、その唯一の目的を持ちます。
const s1 = Symbol() const s2 = Symbol() console.log(s1 === s2); // false
symbol as key
最初の方法は、それをオブジェクトのリテラルに直接追加することです。
// symbol作为key const obj = { [s1]:'abc', [s2]:'cc', }
2 番目の方法は、配列を追加して追加することです。
// 需要用数组方式来获取,不能通过点语法,否则会获取到字符串key console.log(obj[s1]);
3 番目の方法は、オブジェクトの defineProperty
メソッドを使用して追加することです。
const s4=Symbol() Object.defineProperty(obj,s4,{ configurable:true, enumerable:true, writable:true, value:'ff' })
シンボルを通じて対応する値を取得します
ドット構文ではなく、配列モードで取得する必要があります。そうでない場合は、文字列キーが取得されます。
console.log(obj[s1]);
symbol
を暗黙的に string
型に変換することはできません。
注: Symbol 関数のパラメーターはシンボル記述子であり、これは ES10 の新機能です
let Sym = Symbol("Sym") alert(Sym) // TypeError: Cannot convert a Symbol value to a string
1 つを直接 alert
することはできませんsymbol
オブジェクトですが、toString
または .description
を通じて symbol
オブジェクトの記述子を取得できます。
let sym = Symbol('a') console.log(sym.description); // 'a'
シンボルのトラバース
for
トラバーサルおよび object.keys
を使用する場合、
symbol を取得できません。正常です。object
には、オブジェクト内のすべてのシンボルのキーを取得するために使用される getOwnPropertySymbols
メソッドも用意されています。
const sKeys=(Object.getOwnPropertySymbols(obj)); for(const skey of sKeys){ console.log(obj[skey]); }
グローバル シンボル オブジェクトの登録
複数の symbol
の値を一貫させる必要がある場合は、## を渡すことができます。 #symbol 提供される静的メソッド
for メソッドは、値の一貫性を保つために同じ記述子を渡します。
Symbol.for
このメソッドは、指定されたキーを使用してランタイム シンボル レジストリで既存のシンボルを検索し、見つかった場合はそれを返します。それ以外の場合は、このキーを使用してグローバル シンボル レジストリに新しいシンボルが作成されます。const sa=Symbol.for('cc') const sb=Symbol.for('cc') console.log(sa===sb); //true
Symbol.keyFor
このメソッドは、グローバルsymbol の記述子を取得するために使用されます。
const key =Symbol.keyFor(sb) console.log(key); // c
2. Set
Set オブジェクト (配列に似ています) を使用すると、任意のデータ型を保存できます。ただし、値を繰り返すことはできません。
const s1 = new Set() s1.add(10) s1.add(20) s1.add(30) s1.add(40) console.log(s1) // Set(4) { 10, 20, 30, 40 } s1.add(20) console.log(s1) // Set(4) { 10, 20, 30, 40 }
共通メソッドの設定
戻り値 | 説明 | |
---|---|---|
set | オブジェクト内の数値オブジェクト内の数値を返します。セットオブジェクト Quantity | |
Set | ObjectAdd element | |
boolean | 要素を削除 | |
boolean | Set | この値がオブジェクトに存在するかどうか
|
None | Set | オブジェクトの値をクリアします
|
WeakSet は
Set と同様のデータ構造であり、内部データは重複した値を持つことができません。 これと
Set
WeakSet
の違いはオブジェクト型のみを保存でき、基本データ型は保存できません-
WeakSet
これは要素への弱参照です
-
const weakSet = new WeakSet(); let obj = { name: "_island" }; weakSet.add(obj);
WeakSet 共通メソッド
メソッド
説明 | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
weakset オブジェクト | 要素の追加
| 削除 | |||||||||||||||||||||||||||||||||
boolean | 要素を削除
| has | |||||||||||||||||||||||||||||||||
boolean | weakset この値がオブジェクトに存在するかどうか |
关于遍历
所以 4、Map
const obj1 = { name: "_island" }; const obj2 = { name: "QC2125" }; const obj3={ [obj1]:'a', [obj2]:'b', } console.log(obj3); // { '[object Object]': 'b' } ログイン後にコピー 而 const obj1 = { name: "_island" }; const obj2 = { name: "QC2125" }; const map = new Map(); map.set(obj1, "a"); map.set(obj2, "b"); console.log(map); // Map(2) { { name: '_island' } => 'a', { name: 'QC2125' } => 'b' } // or const map2 = new Map([[obj1,'a'],[obj2,'b']]) ログイン後にコピー Map常用方法
遍历Map 通过 map2.forEach((item) => console.log(item)); ログイン後にコピー 通过 for ([val, key] of map2) { console.log(`${key}---${val}`); } ログイン後にコピー 5、WeakMap 和
基本使用 const weakMap = new WeakMap(); weakMap.set(obj, "a"); console.log(weakMap.get(obj)); // a ログイン後にコピー WeakMap常用方法
关于遍历 和 【相关推荐:javascript视频教程、web前端】 以上が新しい es6 データ構造とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。 このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
![]() ホットAIツール![]() Undresser.AI Undressリアルなヌード写真を作成する AI 搭載アプリ ![]() AI Clothes Remover写真から衣服を削除するオンライン AI ツール。 ![]() Undress AI Tool脱衣画像を無料で ![]() Clothoff.ioAI衣類リムーバー ![]() Video Face Swap完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。 ![]() 人気の記事
アサシンのクリードシャドウズ:シーシェルリドルソリューション
3週間前
By DDD
Windows11 KB5054979の新しいものと更新の問題を修正する方法
2週間前
By DDD
Atomfallのクレーンコントロールキーカードを見つける場所
3週間前
By DDD
<🎜>:Dead Rails-すべての課題を完了する方法
4週間前
By DDD
Atomfall Guide:アイテムの場所、クエストガイド、およびヒント
1 か月前
By DDD
![]() ホットツール![]() メモ帳++7.3.1使いやすく無料のコードエディター ![]() SublimeText3 中国語版中国語版、とても使いやすい ![]() ゼンドスタジオ 13.0.1強力な PHP 統合開発環境 ![]() ドリームウィーバー CS6ビジュアル Web 開発ツール ![]() SublimeText3 Mac版神レベルのコード編集ソフト(SublimeText3) ![]() ホットトピック
Gmailメールのログイン入り口はどこですか?
![]() ![]()
Java チュートリアル
![]() ![]()
CakePHP チュートリアル
![]() ![]()
Laravel チュートリアル
![]() ![]()
PHP チュートリアル
![]() ![]() ![]() Java で複雑なデータ構造を使用する場合、Comparator を使用して柔軟な比較メカニズムを提供します。具体的な手順には、コンパレータ クラスの定義、比較ロジックを定義するための比較メソッドの書き換えが含まれます。コンパレータインスタンスを作成します。 Collections.sort メソッドを使用して、コレクションとコンパレータのインスタンスを渡します。 ![]() データ構造とアルゴリズムは Java 開発の基礎です。この記事では、Java の主要なデータ構造 (配列、リンク リスト、ツリーなど) とアルゴリズム (並べ替え、検索、グラフ アルゴリズムなど) について詳しく説明します。これらの構造は、スコアを保存するための配列、買い物リストを管理するためのリンク リスト、再帰を実装するためのスタック、スレッドを同期するためのキュー、高速検索と認証のためのツリーとハッシュ テーブルの使用など、実際の例を通じて説明されています。これらの概念を理解すると、効率的で保守しやすい Java コードを作成できるようになります。 ![]() 参照型は Go 言語の特別なデータ型であり、その値にはデータそのものが直接格納されるのではなく、格納されたデータのアドレスが格納されます。 Go 言語では、参照型にはスライス、マップ、チャネル、ポインターが含まれます。 Go 言語のメモリ管理とデータ転送方法を理解するには、参照型を深く理解することが重要です。この記事では具体的なコード例を組み合わせて、Go言語における参照型の特徴と使い方を紹介します。 1. スライス スライスは、Go 言語で最も一般的に使用される参照型の 1 つです。 ![]() AVL ツリーは、高速かつ効率的なデータ操作を保証するバランスのとれた二分探索ツリーです。バランスを達成するために、左回転と右回転の操作を実行し、バランスに反するサブツリーを調整します。 AVL ツリーは高さバランシングを利用して、ツリーの高さがノード数に対して常に小さくなるようにすることで、対数時間計算量 (O(logn)) の検索操作を実現し、大規模なデータ セットでもデータ構造の効率を維持します。 ![]() Java コレクション フレームワークの概要 Java コレクション フレームワークは Java プログラミング言語の重要な部分であり、データを保存および管理できる一連のコンテナ クラス ライブラリを提供します。これらのコンテナ クラス ライブラリには、さまざまなシナリオでのデータ ストレージと処理のニーズを満たすために、さまざまなデータ構造があります。コレクション フレームワークの利点は、統一されたインターフェイスが提供され、開発者が異なるコンテナ クラス ライブラリを同じ方法で操作できるため、開発の困難さが軽減されることです。 Java コレクション フレームワークのデータ構造 Java コレクション フレームワークにはさまざまなデータ構造が含まれており、それぞれに独自の特性と適用可能なシナリオがあります。以下に、一般的な Java コレクション フレームワークのデータ構造をいくつか示します。 1. リスト: リストは、要素を繰り返すことができる順序付けされたコレクションです。李 ![]() ハッシュ テーブルを使用すると、PHP 配列の交差と和集合の計算を最適化し、時間の複雑さを O(n*m) から O(n+m) に減らすことができます。 具体的な手順は次のとおりです。 ハッシュ テーブルを使用して要素をマップします。最初の配列をブール値に変換すると、2 番目の配列の要素が存在するかどうかがすぐにわかり、交差計算の効率が向上します。ハッシュ テーブルを使用して最初の配列の要素を既存としてマークし、次に 2 番目の配列の要素を 1 つずつ追加し、既存の要素を無視して共用体計算の効率を向上させます。 ![]() PHPSPL データ構造ライブラリの概要 PHPSPL (標準 PHP ライブラリ) データ構造ライブラリには、さまざまなデータ構造を保存および操作するためのクラスとインターフェイスのセットが含まれています。これらのデータ構造には、配列、リンク リスト、スタック、キュー、セットが含まれており、それぞれがデータを操作するためのメソッドとプロパティの特定のセットを提供します。配列 PHP では、配列は一連の要素を格納する順序付けされたコレクションです。 SPL 配列クラスは、ソート、フィルタリング、マッピングなどのネイティブ PHP 配列の拡張機能を提供します。 SPL 配列クラスの使用例を次に示します。 useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array ![]() Go 言語のデータ構造の謎を深く研究するには、具体的なコード例が必要ですが、簡潔で効率的なプログラミング言語である Go 言語は、データ構造の処理においても独特の魅力を発揮します。データ構造はコンピューター サイエンスの基本概念であり、より効率的にアクセスして操作できるようにデータを整理および管理することを目的としています。 Go 言語のデータ構造の謎を深く学ぶことで、データがどのように保存され操作されるかをより深く理解できるようになり、それによってプログラミングの効率とコードの品質が向上します。 1. 配列 配列は最も単純なデータ構造の 1 つです ![]() |