New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

verteiler

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

verteiler

Verteiler ([[fɛɐ̯ˈtaɪ̯lɐ], meaning: distributor](https://en.wiktionary.org/wiki/Verteiler)) distributes an array of weighted items to a given number of recipients.

latest
Source
npmnpm
Version
0.0.1
Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

Verteiler

Verteiler ([fɛɐ̯ˈtaɪ̯lɐ], meaning: distributor) distributes an array of weighted items to a given number of recipients.

Installation

npm install verteiler

Quick start

First you need to integrate Verteiler into your application.

import verteiler from 'verteiler';

The function expects three input parameters:

  • Array of all objects to be distributed
  • Function that returns the weight of an object as a number
  • Number of recipients

For each recipient, an array of objects is returned.

const items = [
  { name: 'a', weight: 2 },
  { name: 'b', weight: 9 },
  { name: 'c', weight: 1 },
  { name: 'd', weight: 6 },
  { name: 'e', weight: 3 }
];

// Distribute over 2 recipients
verteiler(items, (item) => item.weight, 2); 
// => [
//      [{ name: 'b', weight: 9 }, { name: 'a', weight: 2 }],
//      [{ name: 'd', weight: 6 }, { name: 'e', weight: 3 }, { name: 'c', weight: 1 }]
//    ]

// Distribute over 3 recipients
verteiler(items, (item) => item.weight, 3); 
// => [
//      [{ name: 'b', weight: 9 }],
//      [{ name: 'd', weight: 6 }],
//      [{ name: 'e', weight: 3 }, { name: 'a', weight: 2 }, { name: 'c', weight: 1 }]
//    ]

How it works

The list of elements is sorted by weight in descending order and the result is iterated over. The current element is added to the recipient that received the lowest weight in total so far. Elements with weight 0 are distributed evenly among all recipients.

The algorithm is stable as it always returns the same result for the same input parameters. It can therefore also be used to distribute a workload among several consumers that cannot communicate with each other, as long as the total workload and the number of consumers are known to all participants. Each participant must also know its own position in the list of consumers.

Keywords

distribute

FAQs

Package last updated on 30 Oct 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts