npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tiny-totalizer

v0.1.1

Published

Simple and tiny totalisation module using hash

Downloads

5

Readme

TinyTotalizer - 連想配列を使用したNode.js用簡易集計モジュール

連想配列のキーに該当したらカウントを加算するような簡易集計を行う場合、連想配列ならではの問題点に遭遇します。

  1. キーが大文字小文字含めて完全一致しないといけない
  2. カウントを加算する前にキーが存在するかチェックする必要がある

TinyTotalizerはそういった問題を気にせずに簡易集計をすることを目的として作られたモジュールですが、その他にもランキング表示などの簡易集計を便利に行う機能を含んでいます。

サンプル

sample.js

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モジュールをロードします。ロードした変数TinyTotalizernewでインスタンス化したオブジェクトで集計を行います。

メソッド

コンストラクタ new([options, initialData])

TinyTotalizerオブジェクトを作成します。

第一引数: options (省略可能)

連想配列で指定します。指定できるオプションは以下の通りです。

  • 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の指定は無視されます。

第二引数: initialData (省略可能)

オブジェクト作成時点でセットする初期集計データです。

{ キー: カウント }の連想配列を指定します。

カウントが数値化できない値(配列やオブジェクト, 数字以外の文字列など)の場合、そのキーは登録されません。

add(key [, count]);

keyのカウントを加算します。countを省略した場合は1を加算します。

負数を指定した場合は減算されます。

countが数値化できない値(配列やオブジェクト, 数字以外の文字列など)の場合、加算も減算も行いません。

sub(key [, count]);

keyのカウントを減算します。countを省略した場合は1を減算します。

負数を指定した場合は加算されます。

countが数値化できない値(配列やオブジェクト, 数字以外の文字列など)の場合、加算も減算も行いません。

ranking([options])

集計オブジェクトで加減算されたキーをランキング化します。

戻り値は{ name: キー名, count: カウント }の配列です。デフォルトではカウントが多い順にソートされた状態で返されます。

引数optionsは連想配列で指定します。指定できるオプションは以下の通りです。

  • asc (true/false, デフォルト: false)

    trueにするとカウントが少ない順にソートしたランキングを返します。

  • border (数値, デフォルト: 制限なし)

    集計結果表示対象とする必要カウントを指定します。このオプションを指定すると、指定した数値以上のカウント数があるキーのみでランキングを作成します。

  • topN (数値, デフォルト: 制限なし)

    何位までのランキングを作成するかの指定です。例えば10を指定すると、TOP10のランキングを返します。

Changelog

0.1.0 (2013-03-20)

  • 初版リリース

ライセンス

MIT licenseで配布します。

© 2013 ktty1220