セット
1.Set特長
クラス・データ構造は、固有の値コンストラクタ焦点ユニークな機能の新メンバーの配列です
一般的な方法の例としては2.Set
console.log( '------------設定された動作方法-----------------------' );
LETのSETL設定された新たな新=(1,2 ,. 3 ,. 3。] ).add)(68)42である(.add .add({A:2})を追加し({A:2 }。)を追加(のNaN 3)は.add(のNaN 3)
はconsole.log( "SETL"、SETL) (8)セット// {1,2 ,. 3、42、...、68である} "SETL"
set1.delete(1 )
はconsole.log( "SETL"、SETL)//集合{2 ,. 3、(7) 42、68、{...}、...} "SETL"
はconsole.log(set1.has(2)); // trueに set1.clear() はconsole.log(SETL)//セット(0){} //概要:同じ簡略化NaNのものとは異なる複雑なデータ型を追加することを1.Setデータタイプ配列 はconsole.log(「--------セットトラバーサル方法を-------------」)しましょうset1M =新しいセット([ 1、2、2、2
、]); CONSOLE.LOG(set1M.values())// SetIterator {1,2}にconsole.log(set1M.keys()); // SetIterator {1,2}にconsole.log(set1M.entries() )// SetIterator {1 => 1、2 => 2} set1M.forEach(値=>にconsole.log(値))// 1 2 //概要:戻り値として値を設定し、トラバーサルキーの方法を返しますインターフェース//コールのforEachノーリターン値のために呼び出すことができます
3.SETいくつかの古典的な顔の質問
重複排除アレイとセット交差点、労働組合、違いを実装する1
console.log( '-------設定的应用1 ---------------'); //数组去重 にconsole.log([...新しいセット([1、2、2、])])// [1]、[2] にconsole.log(Array.from(新しいセット([1、2、 2])))// [1,2] せset11Arr =新しいセット([1、2、3]) させset12Arr =新しいセット([2,3,4]) //交集 せ交通=新しいセット([ ... set11Arr] .filter(X => set12Arr.has(X)))。 console.log( "交通"、交通)//セット(2){2、3} //并集 はconsole.log(新しいセット([... set11Arr、... set12Arr]))//セット(4 ){1、2、3、4} //差集 CHA新しいセット([... set11Arr] .filter(X => set12Arr.has(X)!))=ましょう。 console.log( "CHA"、CHA)//セット(1){1}
アレイ中に存在する任意の二つが等しく和そのそうであれば、所与の無秩序アレイ、および変数の和の2の整数値は、それが真を返します。それ以外の場合はfalseを返します。例えば、配列[3、5、1、4]、及びSUM = 9、機能は、理由5 + 4 = 9 trueを返します。
// 常规版本 のconst findSum =(ARR、ヴァル)=> { searchValuesのみましょう = 新しいセット(); searchValues.add(ヴァル - ARR [0 ])。 用(; I <長さ、iは1、長さ= arr.lengthを=せI ++ ){ searchValせ =ヴァル- ARR [I]。 もし(searchValues.has(ARR [I])){ 戻り 真。 } 他{ searchValues.add(searchVal)。 } }。 リターン はfalse ; }。 // 简洁的版本: constのfindSum =(ARR、合計)=> arr.some((セット => N => set.has(N)|| set.add(合計- N))(!新しいセット)); 見つけてみましょう = findSum([3、5、1、4]、9 ) にconsole.log(発見)// 真
地図
1.Map機能
オブジェクトキーの文字列のみ結合構造のオブジェクトの元の拡張子に対応するClassオブジェクトは、拡張された地図です
一般的な方法の例としては2.Map
console.log( "------------地図操作方法------------------" ) MAP1をしましょう = 新しい地図([[ "A 」、1]、[ "B"、2]])。セット( "C"、3).SETを( ""、5)// セット方法有值更新没值替换 はconsole.log( "MAP1"、 MAP1)// マップ(3){ "" => 5、 "B" => 2、 "C" => 3} はconsole.log(map1.get( ""))// 5 はconsole.log( map1.has( ""))// 真 MAP1。削除( "" ) はconsole.log( "MAP1"、MAP1)// マップ(2){ "B" => 2、 "C" => 3} MAP1。 console.log( "------------地図トラバーサル方法------------------" ) のlet MAPM = 新しい新しい地図([[「A "1]、[" B "2 ]]) はconsole.log(MapM.values())// MapIterator {1,2} にconsole.log(MapM.keys()) // MapIterator {" A」、 "B"} はconsole.log(MapM.entries())// MapIterator { "A" => 1、 "B" => 2} MapM.forEach(X =>にconsole.log(X))// 。1 2 // 概要:値とキーの地図、エントリメソッドがコールのためのインタフェースからトラバースを返す // コールのforEachノーリターン値
いくつかの古典的な顔の質問3.Map
配列にマッピングする方法1.
console.log([... 新しい地図([[ ""、1]、[ 'B'、2]])])// [[ ""、1]、[ 'B'、2]]