Files
2026-07-13 12:48:55 +08:00

36 lines
808 B
JavaScript

import { pack } from 'efrt'
const hasNumber = /[0-9,;!:|¦]/
const hasPunct = /[.,/#!$%^&*;:{}=\-_`~()']/
const hasLetter = /[a-z]/
const zipUp = function (counts) {
const byFreq = {}
counts = Object.entries(counts)
// counts = counts.filter(a => a[1] > 2)
counts = counts.sort((a, b) => {
if (a[1] > b[1]) {
return 1
} else if (a[1] < b[1]) {
return -1
}
return 0
})
counts.forEach(a => {
const [str, num] = a
if (!str || hasNumber.test(str) || hasPunct.test(str) || !hasLetter.test(str)) {
return
}
const k = String(num)
byFreq[k] = byFreq[k] || []
byFreq[k].push(str)
})
//compress each key
Object.keys(byFreq).forEach(k => {
byFreq[k] = pack(byFreq[k])
})
// console.log(byFreq)
return byFreq
}
export default zipUp