1 年前にこの質問をされたようですので、まだ回答が必要かどうかはわかりませんが、似たようなものを探していたので、お答えできます。問題は、referrers(f) が列挙を返すため、それをハッシュマップに入れようとしても実際にはうまく変換されないことです。一意の char 配列を見つけようとしていた同様のタイプの分析を行っていました (最初の 50 文字までの char 配列の一意の組み合わせを数えます)。私が思いついたのはこれでした:
var counts = {};
filter(
map(
unique(
map(
filter(heap.objects('char[]'), "it.length > 50"), // filter out strings less than 50 chars in length
function(charArray) { // chop the string at 50 chars and then count the unique combos
var subs = charArray.toString().substr(0,50);
if (! counts[subs]) {
counts[subs] = 1;
} else {
counts[subs] = counts[subs] + 1;
}
return subs;
}
) // map
) // unique
, function(subs) { // map the strings into an array that has the string and the counts of that string
return { string: subs, count: counts[subs] };
}) // map
, "it.count > 5000"); // filter out strings that have counts < 5000
これは基本的に、列挙 (この場合は heap.objects('char[]')) を取得し、それをフィルター処理してマップし、統計を計算できるようにする方法を示しています。これが誰かに役立つことを願っています。