Introduction to accumulator-js
accumulator-js is a powerful library designed to handle complex data accumulation and transformation in JavaScript. Whether you’re dealing with arrays, objects, or streams, accumulator-js provides a rich set of APIs to streamline your data processing tasks.
Key Features and API Examples
1. accumulate
The accumulate
function is used to accumulate values based on a reducer function. It’s similar to Array.prototype.reduce but with more flexibility.
import { accumulate } from 'accumulator-js';
const numbers = [1, 2, 3, 4, 5];
const sum = accumulate(numbers, (acc, val) => acc + val, 0);
console.log(sum); // Output: 15
2. accumulateByField
The accumulateByField
function is tailored for objects. It accumulates data based on a specified field in the object array.
import { accumulateByField } from 'accumulator-js';
const data = [
{ name: 'Alice', score: 10 },
{ name: 'Bob', score: 15 },
{ name: 'Alice', score: 5 }
];
const scoreByName = accumulateByField(data, 'name', 'score');
console.log(scoreByName); // Output: { Alice: 15, Bob: 15 }
3. groupBy
The groupBy
function groups elements of an array based on a provided key function.
import { groupBy } from 'accumulator-js';
const data = ['apple', 'banana', 'apricot', 'blueberry'];
const grouped = groupBy(data, item => item.charAt(0));
console.log(grouped); // Output: { a: ['apple', 'apricot'], b: ['banana', 'blueberry'] }
4. unique
The unique
function retrieves unique items from an array based on a provided key function.
import { unique } from 'accumulator-js';
const data = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
const uniqueData = unique(data, item => item.id);
console.log(uniqueData); // Output: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]
5. deduplicate
The deduplicate
function eliminates duplicate entries from an array.
import { deduplicate } from 'accumulator-js';
const data = ['apple', 'banana', 'apple', 'orange'];
const deduplicated = deduplicate(data);
console.log(deduplicated); // Output: ['apple', 'banana', 'orange']
App Example with accumulator-js
Let’s create a simple score tracking application using accumulator-js to showcase its functionalities.
import { accumulateByField, groupBy, unique } from 'accumulator-js';
const scores = [
{ player: 'Alice', level: 1, score: 50 },
{ player: 'Alice', level: 2, score: 30 },
{ player: 'Bob', level: 1, score: 40 },
{ player: 'Alice', level: 1, score: 20 },
];
// Accumulate scores by player
const totalScores = accumulateByField(scores, 'player', 'score');
console.log(totalScores); // Output: { Alice: 100, Bob: 40 }
// Group scores by level
const scoresByLevel = groupBy(scores, item => item.level);
console.log(scoresByLevel);
// Output:
// {
// 1: [
// { player: 'Alice', level: 1, score: 50 },
// { player: 'Bob', level: 1, score: 40 },
// { player: 'Alice', level: 1, score: 20 }
// ],
// 2: [{ player: 'Alice', level: 2, score: 30 }]
// }
// Get unique players
const uniquePlayers = unique(scores, item => item.player);
console.log(uniquePlayers); // Output: [{ player: 'Alice', level: 1, score: 50 }, { player: 'Bob', level: 1, score: 40 }]
With accumulator-js, you can easily manage and manipulate your data, making your JavaScript applications more efficient and powerful.
Hash: f453395371f6e12972a5704919296a80da9b75c944d6f6e17d1314b7015bb0c3