Manage the "frencency" of objects
Frecency is a heuristic that combines frequency and recency into a single measure. It is useful for predicting the likelihood of users revisiting certain links, websites, etc.
More information can be found here
- Simple API
- Lightweight
Load an array of
items
that you wish to be tracked. Ideally, this should be an array of Objects.
Visit an item by passing the property path you wish to target (
prop
) and the value of that target property (attr
). Optional callback (cb
).
Example:
frecent.visit('data.name.first', 'John')
. The first argument tells frecent the path to the target path. The second argument should be the expected value to the path specified. See Usage for more details.
Retrieve the ranked objects. See Usage to see the returned data structure.
import Frecent from 'frecent'
const frecent = new Frecent()
// initialize with custom decay time
// Options: hour, day, week, month
// default: day
const frecent = new Frecent({
decay: 'hour'
})
// Items to be tracked can be loaded from localStorage, a DB, etc
const itemsToTrack = [
{ url: 'https://example.com' },
{ url: 'https://example.org' }
]
// Alternatively, you can load previously parsed data
const itemsToTrack = [
{
body: {url: 'https://example.com' },
_visits: 2,
_lastVisited: [Date|Timestamp],
_weight: 140
},
{
body: {url: 'https://example.org' },
_visits: 1,
_lastVisited: [Date|Timestamp],
_weight: 90
}
]
frecent.load(itemsToTrack)
// 'Visit' a item (will increase the weight of the item.
// Therefore increasing the likelihood of revisiting)
frecent.visit('url', 'https://example.com')
// Example: if object has nested properties
// use dot or bracket syntax to notate nested properties
frecent.visit('data.url', 'https://example.com')
// Retrieve items ranked by 'Frecency'
const ranked = frecent.get()
// [
// {
// body: { url: 'https://example.com' },
// _visits: 1,
// _lastVisited: [Date],
// _weight: 100,
// }
// ]
1.0.4: Specify a custom decay time
1.0.3: Use dot or bracket notation in visit
method via object-path-resolve
You can request a new feature by submitting an issue. If you would like to implement a new feature feel free to issue a Pull Request.
Frecent is protected under the MIT License