Weighted sum algorithm implementation used on Mealou (https://m.me/Mealoubot | https://www.mealou.co)
Algorithm Documentation:
$ npm install weighted-sum
Sorting three restaurants by note
and distance
fields:
const weightSum = require('weighted-sum')
const data = [
{
id: 'restaurant 1',
note: 4,
distance: 626
},
{
id: 'restaurant 2',
note: 4,
distance: 410
},
{
id: 'restaurant 3',
note: 3,
distance: 700
}
]
const sortOptions = {
includeScore: false,
note: {
weight: 0.4,
sort: 'asc'
},
distance: {
weight: 0.6,
sort: 'desc'
}
}
// Output: ['restaurant 2', restaurant 1', restaurant 3]
const sortedItems = weightSum(data, sortOptions)
Type: Array
- id field is mandatory
- Sorting criterias must be numbers
Type: Object
includeScore
: whether or not include sorting score in result. Default isfalse
weight
is mandatory- sum of all
weight
must equal 1 - Default
sort
isasc
MIT © Dorian Camilleri