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 isfalseweightis mandatory- sum of all
weightmust equal 1 - Default
sortisasc
MIT © Dorian Camilleri
