配列の重複した要素があるとき、その要素の出現数を求めるArray.freqメソッドです。Array.freqメソッドはprototype.js v1.4.0を使うことを前提としています。
Array.freqメソッドは配列の要素をキー、出現数を値としたオブジェクトを返却します。
Object.extend(Array.prototype, { freq: function() { return this.inject({}, function(dest, value) { var key = value.toString(); if (dest[key]==undefined) dest[key] = 0; dest[key] += 1; return dest; }); } });
キーは配列の要素をtoStringしたものを使います。ですので、配列の要素が「null」「undefined」「Object」のときその結果は曖昧です。要素が「constractor」や「toString」のときプロパティとメソッドを上書きしてしまう問題も残ります。どうすんべかな。