Pythonic
Python like utility functions for JavaScript: range, enumerate, items, zip and zipLongest.
These functions return an Iterator
instance similar to Python Iterators.
This Iterator implementation is lazy evaluated,
offers map,
filter,
reduce,
some,
every
and Symbol.asyncIterator
interfaces.
Install
npm install pythonic --saveFunctions
range
import {range} from 'pythonic';
range(3).map(x => console.log(x + 1));
// 1
// 2
// 3
for (const i of range(10, 25, 5))
console.log(i);
// 10
// 15
// 20
console.log(range(5).reduce((accumulator, current) => accumulator + current));
// 10enumerate
import {enumerate} from 'pythonic';
const arr = ['a', 'b'];
for (const [index, value] of enumerate(arr))
console.log(`index: ${index}, value: ${value}`);
// index: 0, value: a
// index: 1, value: bzip | zipLongest
import {zip, zipLongest} from 'pythonic';
const arr1 = ['a', 'b'];
const arr2 = ['c', 'd', 'e'];
for (const [first, second] of zip(arr1, arr2))
console.log(`first: ${first}, second: ${second}`);
// first: a, second: c
// first: b, second: d
for (const [first, second] of zipLongest(arr1, arr2))
console.log(`first: ${first}, second: ${second}`);
// first: a, second: c
// first: b, second: d
// first: undefined, second: e
// unzip
const [arrayFirst, arraySecond] = [...zip(...zip(arr1, arr2))];items
import {items} from 'pythonic';
const obj = {a: 'aa', b: 'bb'};
for (const [key, value] of items(obj))
console.log(`key: ${key}, value: ${value}`);
// key: a, value: aa
// key: b, value: bb
const map = new Map([[1, 'one'], [2, 'two']]);
for (const [key, value] of items(map))
console.log(`key: ${key}, value: ${value}`);
// key: 1, value: one
// key: 2, value: twoIterator
import {Iterator, range} from 'pythonic';
const randomIntegers = (size, start, stop) => new Iterator(function * () {
for (const _ of range(size))
yield Math.floor(Math.random() * (stop - start) + start);
});
const randomNumbers = randomIntegers(3, 10, 1000);
for (const randomNumber of randomNumbers)
console.log(randomNumber);
// 685
// 214
// 202
console.log(randomNumbers.some(value => value > 10));
// true
console.log(randomNumbers.every(value => value < 1000));
// true
Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
