JSは2つの数の和のアルゴリズムを解きます。
5910 ワード
本論文の実例は、JSが2つの数の和を解くアルゴリズムを述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
テーマの説明
一つの整数配列と一つの目標値を指定して、配列と目標値の2つの数を探し出します。
各入力は一つの答えにしか対応していないと仮定してもいいです。同じ要素は繰り返し利用できません。
::tip
nums=[2,7,11,15]を与えられ、target=9
nums[0]+nums[1]=2+7=9
だから[0,1]を返します
:
法を解く
Mapオブジェクトはキーのペアを保存します。どの値(オブジェクトまたは元の値)もキーまたは値として使用できます。
Objectとmapsの比較
そのために、以前は私たちは対象を
しかし、
1つの
size属性によって直接に一つの
ES 5は最初に
Mapは頻繁にキーパッドの値を削除するシーンにおいて、性能の優位性があります。
属性
Map.length
属性lengthの値は0です。
get Map[@species]
このコンストラクタは、派生オブジェクトを作成するために使用されます。
Map.prototype
Mapコンストラクタの原型を表します。属性の追加を許可して、すべてのMapオブジェクトに適用します。
すべてのMapオブジェクトのインスタンスは、Map.prototypeを引き継ぎます。
Map.prototype.com nstructor
関数を返します。インスタンスのプロトタイプを作成しました。デフォルトはMap関数です。
Map.prototype.size
Mapオブジェクトのキー/値ペアの数を返します。
Map.prototype.clear()
Mapオブジェクトのすべてのキー/値ペアを削除します。
Map.prototype.delete(key)
この要素がMapオブジェクトに存在する場合は、削除してtrueに戻ります。要素が存在しない場合はfalseに戻ります。
Map.prototype.entries()
新しいIteratorオブジェクトを返します。挿入順にMapオブジェクトの各要素の「key,value」配列が含まれます。
Map.prototype.forEach(calbackFn[,thisArg])
挿入順に、Mapオブジェクト内の各キーの値のペアでコールバックFn関数を呼び出します。forEachのためにthisArgが提供された場合、それは毎回のコールバックの中でthis値とします。
Map.prototype.get(key)
リターンキーに対応する値が存在しない場合は、undefinedを返します。
Map.prototype.has(key)
Mapのインスタンスにキーが含まれているかどうかを示すブール値を返します。
Map.prototype.keys()
新しいIteratorオブジェクトを返します。挿入順にMapオブジェクトの各要素のキーが含まれます。
Map.prototype.set(key,value)
Mapオブジェクト中のキーの値を設定します。このMapオブジェクトを返します。
Map.prototype.values()
新しいIteratorオブジェクトを返します。挿入順に各要素の値が含まれます。
Map.prototype[@@iterator]()
新しいIteratorオブジェクトを返します。挿入順にMapオブジェクトの各要素の「key,value」配列が含まれます。
例
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Map
興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScript数学演算の使い方のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScript配列操作技術のまとめ」、「JavaScriptソートアルゴリズムのまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript検索アルゴリズムのテクニックのまとめ」および「JavaScriptエラーとデバッグテクニックのまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。
テーマの説明
一つの整数配列と一つの目標値を指定して、配列と目標値の2つの数を探し出します。
各入力は一つの答えにしか対応していないと仮定してもいいです。同じ要素は繰り返し利用できません。
::tip
nums=[2,7,11,15]を与えられ、target=9
nums[0]+nums[1]=2+7=9
だから[0,1]を返します
:
法を解く
Map
を用いて配列要素値と対応する下付き文字を記録し、1つの数はnums[i]
で、target - nums[i]
がMap
であるかどうかを判断する。
var twoSum = function(nums, target) {
const _length = nums.length;
const _mayMap = new Map();
for (let i = 0; i < _length; i++) {
if (_mayMap.has(target - nums[i])) {
return [_mayMap.get(target - nums[i]), i];
}
_mayMap.set(nums[i], i);
}
};
Mapの回顧Mapオブジェクトはキーのペアを保存します。どの値(オブジェクトまたは元の値)もキーまたは値として使用できます。
new Map([iterable])
Iterable
は、キーパッドペア(2つの要素の配列、例えばiterable
)の要素の配列または他の[[ 1, 'one' ],[ 2, 'two' ]]
オブジェクトとすることができる。各キーペアは新しいMap
に追加されます。null
はundefined
として扱われます。Objectとmapsの比較
Objects
とMaps
は、同じように、あなたがボタンを押して1つの値にアクセスしたり、削除キーを削除したり、1つのキーが結合されているかどうかを検出したりすることができます。そのために、以前は私たちは対象を
Maps
として使っていました。しかし、
Maps
とObjects
はいくつかの重要な違いがあります。下記の状況でMap
を使うのがより良い選択です。1つの
Object
のキーは文字列またはSymbols
しかないが、1つのMap
のキーは、関数、オブジェクト、基本タイプを含む任意の値であってもよい。Map
のキーの値は順序良く、オブジェクトに追加されたキーはそうではない。したがって、これを通過すると、オブジェクトは挿入順にキーの値に戻ります。size属性によって直接に一つの
Map
のキーの数を取得できますが、Map
のキーの数は手動で計算できます。Object
は直接反復可能であり、一方、Map
の反復は、まずキー配列を取得してから反復する必要がある。Object
はすべて自分の原型があって、原型の鎖の上のキーパッドの名前はあなたの自分の対象の上の設定のキーパッドの名前と衝突するかもしれません。ES 5は最初に
Object
で原型のないオブジェクトを作成できますが、このような使い方はあまり見られません。Mapは頻繁にキーパッドの値を削除するシーンにおいて、性能の優位性があります。
属性
Map.length
属性lengthの値は0です。
get Map[@species]
このコンストラクタは、派生オブジェクトを作成するために使用されます。
Map.prototype
Mapコンストラクタの原型を表します。属性の追加を許可して、すべてのMapオブジェクトに適用します。
すべてのMapオブジェクトのインスタンスは、Map.prototypeを引き継ぎます。
Map.prototype.com nstructor
関数を返します。インスタンスのプロトタイプを作成しました。デフォルトはMap関数です。
Map.prototype.size
Mapオブジェクトのキー/値ペアの数を返します。
Map.prototype.clear()
Mapオブジェクトのすべてのキー/値ペアを削除します。
Map.prototype.delete(key)
この要素がMapオブジェクトに存在する場合は、削除してtrueに戻ります。要素が存在しない場合はfalseに戻ります。
Map.prototype.entries()
新しいIteratorオブジェクトを返します。挿入順にMapオブジェクトの各要素の「key,value」配列が含まれます。
Map.prototype.forEach(calbackFn[,thisArg])
挿入順に、Mapオブジェクト内の各キーの値のペアでコールバックFn関数を呼び出します。forEachのためにthisArgが提供された場合、それは毎回のコールバックの中でthis値とします。
Map.prototype.get(key)
リターンキーに対応する値が存在しない場合は、undefinedを返します。
Map.prototype.has(key)
Mapのインスタンスにキーが含まれているかどうかを示すブール値を返します。
Map.prototype.keys()
新しいIteratorオブジェクトを返します。挿入順にMapオブジェクトの各要素のキーが含まれます。
Map.prototype.set(key,value)
Mapオブジェクト中のキーの値を設定します。このMapオブジェクトを返します。
Map.prototype.values()
新しいIteratorオブジェクトを返します。挿入順に各要素の値が含まれます。
Map.prototype[@@iterator]()
新しいIteratorオブジェクトを返します。挿入順にMapオブジェクトの各要素の「key,value」配列が含まれます。
例
var myMap = new Map();
var keyObj = {},
keyFunc = function () {},
keyString = "a string";
//
myMap.set(keyString, " 'a string' ");
myMap.set(keyObj, " keyObj ");
myMap.set(keyFunc, " keyFunc ");
myMap.size; // 3
//
myMap.get(keyString); // " 'a string' "
myMap.get(keyObj); // " keyObj "
myMap.get(keyFunc); // " keyFunc "
myMap.get("a string"); // " 'a string' "
// keyString === 'a string'
myMap.get({}); // undefined, keyObj !== {}
myMap.get(function() {}) // undefined, keyFunc !== function () {}
データを転送
let valuesMap = new Map();
class payserviceclass {
constructor() {}
getItem(key) {
const stringKey = String(key);
if (valuesMap.has(key)) {
return valuesMap.get(stringKey);
}
return null;
}
setItem(key, val) {
return valuesMap.set(String(key), val);
}
clear() {
return valuesMap.clear();
}
}
const payservice = new payserviceclass();
export default payservice;
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Object/Map
興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScript数学演算の使い方のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScript配列操作技術のまとめ」、「JavaScriptソートアルゴリズムのまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript検索アルゴリズムのテクニックのまとめ」および「JavaScriptエラーとデバッグテクニックのまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。