Rankr is a simple multi-criteria decision analysis (MCDA) library written in JavaScript.
⚠ Warning Please keep in mind this project is still in initial development as defined by semver 2.0.0 spec item 4:
Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
The Rankr docs are located at https://westinschepper.com/rankr:
# npm
npm install rankr
# yarn
yarn add rankr
Use with Node.js, Browserify, or webpack:
import Rankr from 'rankr'
const Rankr = require('rankr');
I'm looking for new car. low price, high gas mileage, and a high safety rating are important to me.
// This is your data
const cars = [
{ make: 'Ford', model: 'Raptor', price: 45000, safetyRating: 5, mpg: 21 },
{ make: 'Audi', model: 'S3', price: 50000, safetyRating: 9, mpg: 29 },
{ make: 'BMW', model: 'M3', price: 60000, safetyRating: 6, mpg: 24 },
{ make: 'Audi', model: 'Q8RS', price: 70000, safetyRating: 10, mpg: 22 },
{ make: 'Mercedes', model: 'AMG', price: 110000, safetyRating: 3, mpg: 18 }
]
// The criterias (low price, high gas mileage, high safety rating)
const criterias = [
{ key: 'price', strategy: 'decreasing' },
{ key: 'mpg', strategy: 'increasing' },
{ key: 'safetyRating', strategy: 'increasing' },
]
Rankr(cars, criterias)
// [
// { score: 0.9267399267399267, record: { make: "Audi", model: "S3", price: 50000, safetyRating: 9, mpg: 29 },
// { score: 0.6596736596736597, record: { make: "Audi", model: "Q8RS", price: 70000, safetyRating: 10, mpg: 22 },
// { score: 0.5810855810855811, record: { make: "BMW", model: "M3", price: 60000, safetyRating: 6, mpg: 24 },
// { score: 0.5194805194805194, record: { make: "Ford", model: "Raptor", price: 45000, safetyRating: 5, mpg: 21 },
// { score: 0, record: { make: "Mercedes", model: "AMG", price: 110000, safetyRating: 3, mpg: 18 } }
// ]