Security News
Input Validation Vulnerabilities Dominate MITRE's 2024 CWE Top 25 List
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
tiny-totalizer
Advanced tools
連想配列のキーに該当したらカウントを加算するような簡易集計を行う場合、連想配列ならではの問題点に遭遇します。
TinyTotalizerはそういった問題を気にせずに簡易集計をすることを目的として作られたモジュールですが、その他にもランキング表示などの簡易集計を便利に行う機能を含んでいます。
var TinyTotalizer = require('tiny-totalizer');
var tt = new TinyTotalizer({ fuzzyLevel: 2 });
tt.add('javascript');
tt.add('JavaScript');
tt.add('coffeeScript', 3);
tt.add('coffee script', 2);
tt.sub('JAVASCRIPT');
・
・
・
console.log(tt.ranking({ topN: 10 }));
/* console.log()の出力
[
{ name: 'coffeeScript', count: 5 },
{ name: 'javascript', count: 1 },
・
・
・
]
*/
TinyTotalizer
オブジェクトを作成し、そのオブジェクトに対してadd
およびsub
メソッドでキーに該当するカウントを加減算し、最後にranking
メソッドで集計結果のランキング配列を取得する流れになっています。
npm install tiny-totalizer
var TinyTotalizer = require('tiny-totalizer');
で、TinyTotalizerモジュールをロードします。ロードした変数TinyTotalizer
をnew
でインスタンス化したオブジェクトで集計を行います。
TinyTotalizerオブジェクトを作成します。
連想配列で指定します。指定できるオプションは以下の通りです。
allowMinus (true
/false
, デフォルト: true
)
減算により、対象キーのカウントが0未満になる事を許可するかどうかの指定です。
false
にすると、対象キーのカウントから0未満になるような減算を行ってもカウントは0になります。
fuzzyLevel (数値, デフォルト: 0
)
キーの一致判定に関しての曖昧さレベルです。数値で指定します。
0
: 大文字・小文字も含めて完全に一致するキーのカウントを加減算します。該当するキーがなければ新規にカウント0でキーを作成します。
1
: 大文字・小文字の違いを無視した上で一致するキーのカウントを加減算します。キーの形は元から存在する方です。
2
: 大文字・小文字の違いと半角スペースの有無を無視した上で一致するキーのカウントを加減算します。
standardizer (関数)
上記fuzzyLevel
で用意されている以外のキーの文字統一を行いたい場合に、独自の文字統一関数を登録できます。
引数で受け取った文字列を加工して返す関数を指定します。
function customStandardizer (s) {
// キーを比較する時に、比較する側・される側どちらもこの処理を施してから比較を行う。
// この例では小文字に統一して、半角スペースとハイフンを除去したキーで比較する。
return s.toLowerCase().replace(/[\s\-]/g, '');
});
var tt = new TinyTotalizer({ standardizer: customStandardizer }); // 文字統一関数を独自のものに変更
tt.add('javascript');
tt.add('Java-Script'); // 'javascript'と同一とみなされ、'javascript'キーに加算される
standardizer
を指定した場合はfuzzyLevel
の指定は無視されます。
オブジェクト作成時点でセットする初期集計データです。
{ キー: カウント }の連想配列を指定します。
カウントが数値化できない値(配列やオブジェクト, 数字以外の文字列など)の場合、そのキーは登録されません。
key
のカウントを加算します。count
を省略した場合は1を加算します。
負数を指定した場合は減算されます。
count
が数値化できない値(配列やオブジェクト, 数字以外の文字列など)の場合、加算も減算も行いません。
key
のカウントを減算します。count
を省略した場合は1を減算します。
負数を指定した場合は加算されます。
count
が数値化できない値(配列やオブジェクト, 数字以外の文字列など)の場合、加算も減算も行いません。
集計オブジェクトで加減算されたキーをランキング化します。
戻り値は{ name: キー名, count: カウント }の配列です。デフォルトではカウントが多い順にソートされた状態で返されます。
引数options
は連想配列で指定します。指定できるオプションは以下の通りです。
asc (true
/false
, デフォルト: false
)
true
にするとカウントが少ない順にソートしたランキングを返します。
border (数値, デフォルト: 制限なし)
集計結果表示対象とする必要カウントを指定します。このオプションを指定すると、指定した数値以上のカウント数があるキーのみでランキングを作成します。
topN (数値, デフォルト: 制限なし)
何位までのランキングを作成するかの指定です。例えば10を指定すると、TOP10のランキングを返します。
MIT licenseで配布します。
© 2013 ktty1220
FAQs
Simple and tiny totalisation module using hash
The npm package tiny-totalizer receives a total of 1 weekly downloads. As such, tiny-totalizer popularity was classified as not popular.
We found that tiny-totalizer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.