maju (for MAjority JUdgment) is a Javascript library implementing the Majority Judgment voting system.
npm install majumaju (for majority judgment) is a Javascript library implementing the majority judgment voting system.More info on majority judgment
npm i maju or yarn add majuThe exposed method allows you to create a poll:
``javascript
import createPoll from 'maju';
const myPoll = createPoll(['Matrix', 'Ghostbusters', 'Terminator', 'Stargate'])
`
Use the poll's addVotes() function to cast votes. The array parameter must contain an object for each vote. Each vote object must include a property for every poll option. The value must be an integer between 0 and 5 (configurable via createPoll options), the higher the better.
`javascript`
myPoll.addVotes([{ Matrix: 5, Stargate: 1, Ghostbusters: 0, Terminator: 2 }])
Use the poll's getResults() function to get detailed results.
`javascript`
console.log(myPoll.getResults())
`javascript`
const myPoll = createPoll(['Matrix', 'Ghostbusters', 'Terminator', 'Stargate'], { GRADING_LEVELS: 6 })
You can distinguish between different error types to handle them effectively:
`typescript
import { InvalidVoteError, VoteStructureError } from 'maju';
try {
poll.addVotes([userVote]);
} catch (error) {
if (error instanceof VoteStructureError) {
console.error(Invalid vote keys. Expected: ${error.expected}, Given: ${error.given});`
} else if (error instanceof InvalidVoteError) {
console.error("Vote rejected:", error.message);
}
}
objects, sorted by rank (winner first). Each result contains:
- rank: The rank of the option (0 is best). Ties have the same rank.
- name: The option name.-
medianGrade: The median grade value.
- distribution: Array of length GRADING_LEVELS with objects { count, percentage } for each grade.Demo
`
pnpm i
pnpm demo
`Refer to
demo/index.js for a usage example
- pnpm demo:node for a node-only example
- pnpm demo` for a browser usage example