周波数カウンター
3461 ワード
このパターンは、JavaScriptオブジェクトを使用して、データを格納したり、データを生成したり、データの比較に最も有用です.
例に入りましょう.
2つの配列を受け入れるように、同じ名前の関数を書きます.配列1のすべての値が配列2の対応する値二乗を持つなら、意図した関数はtrueを返すべきです.
例えば
解説
それで、体系的なアプローチで物事をしましょう.私たちは最後のレッスンで自分自身を設定を解決するために行った意図したアプローチを採用してください. 関数宣言:名前の宣言 エッジケース
オブジェクトの宣言:このアプローチのコアロジックが依存している場所であると言うことができますが、それは必ずしもオブジェクトでなければならないことに注意してください.オブジェクトの大きなOはオブジェクトにアクセスしたり、削除したり、追加したりします.
空のオブジェクトは、上記のように配列の各文字の頻度を格納するように宣言されました. コア目的:コアの目的に焦点を当てましょう.これはARRY 2内のArray 1の各文字の四角形の存在を探すことです.コードのブロックから 最終的な部分:コードの最終的なブロックは、freqcounter 2の各々の要素の正方形がfreqcounter 1の対応する同等を有するかどうかチェックすることを目的とする.もし望むなら😩, それはfalseに評価します、そして、そうでないならば、我々は我々のコード
つのストリングを与えられて、2番目のストリングが最初のアナグラムであるかどうか決定するために、関数を書きます.アナグラムは、単語、フレーズ、または名前などの別の文字を並べ替えることによって形成される
上記の例が概念化されたパターンに光を当てることを願っています.次の講義でお会いしましょう.
例に入りましょう.
2つの配列を受け入れるように、同じ名前の関数を書きます.配列1のすべての値が配列2の対応する値二乗を持つなら、意図した関数はtrueを返すべきです.
例えば
similar([1,2,3],[4,1,9]) this would return true
similar([1,2,1],[4,4,1]) this would return false
以下の周波数カウンター方式の使用function similar(array1, array2) {
if (array1.length !== array2.length){
return false;
}
let freqCounter1 = {};
let freqCounter2 = {};
for(let val of array1){
freqCounter1[val] = (freqCounter1[val] || 0) +1
}
for(let val of array2){
freqCounter2[val] = (freqCounter2[val] || 0) +1
}
for(let key in freqCounter1){
if(!(key ** 2 in freqCounter2)){
return false
}
if(freqCounter2[key ** 2] !== freqCounter1[key]) {
return false;
}
}
return true;
}
テストケースsimilar([1,2,3,2,5],[4,9,4,1]) returns
false
similar([1,2,3],[9,1,4]) returnstrue
解説
それで、体系的なアプローチで物事をしましょう.私たちは最後のレッスンで自分自身を設定を解決するために行った意図したアプローチを採用してください.
similar
これは入力として2つの別個の配列をとります.the first block of code after the function declaration.
これは、それがコア・アルゴリズム論理の前に実行して、無効または望ましくない入力の場合、セット結果を返す短絡回路と称されることができる.In this case, check if the length of the first array is not equal to that of the second array and returns an output. In this case, it just returns a false statement.
オブジェクトの宣言:このアプローチのコアロジックが依存している場所であると言うことができますが、それは必ずしもオブジェクトでなければならないことに注意してください.オブジェクトの大きなOはオブジェクトにアクセスしたり、削除したり、追加したりします.
空のオブジェクトは、上記のように配列の各文字の頻度を格納するように宣言されました.
The same goes for freqCounter2.
for(let key in freqCounter1){
freqcounter 1内の各キーを通してループを行い、結果として生じるコードのような比較を行いますif(!(key ** 2 in freqCounter2)){
これはfreqcounter 1の各キーの四角形がfreqcounter 2に存在しないかどうかをチェックする短絡回路として働き、偽を返す.retuns true;
すべての条件が通過されるならば.Another Example
つのストリングを与えられて、2番目のストリングが最初のアナグラムであるかどうか決定するために、関数を書きます.アナグラムは、単語、フレーズ、または名前などの別の文字を並べ替えることによって形成される
RAT is an anagram of TAR
function anagrams(first, second) {
if(first.length !== second.length){
return false;
}
let freqCounter1 = {};
let freqCounter2 = {};
for(let val of first){
freqCounter1[val] = (freqCounter1[val] || 0) +1
}
for(let val of second){
freqCounter2[val] = (freqCounter2[val] || 0) +1
}
console.log(freqCounter1);
console.log(freqCounter2);
for(let key in freqCounter1){
if(!(freqCounter2.hasOwnProperty(key))){
return false
}
if(freqCounter1.values !== freqCounter2.values){
return false;
}
}
return true;
}
テストケースsimilar(bat,tab) returns
true
similar([salt, tale) returnsfalse
上記の例が概念化されたパターンに光を当てることを願っています.次の講義でお会いしましょう.
Reference
この問題について(周波数カウンター), 我々は、より多くの情報をここで見つけました https://dev.to/clouded_knight/frequency-counter-hl0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol