Giter VIP home page Giter VIP logo

functional's Introduction

functional

Functional JavaScript

Installation

In a browser e.g.

<script type="module">
import * as fnArray from './array.mjs'

console.log(fnArray.head(['foo', 'bar']))
</script>

In Node.js:

The --experimental-modules flag can be used to enable features for loading ESM modules.

node --experimental-modules .

$ npm init -y
$ npm i daliborgogic/functional
$ touch index.mjs

// index.mjs
import * as fnArray from './node_modules/functional/array'

console.log(fnArray.head(['foo', 'bar']))

$ npm start
> foo

combine(arrays)

Combine multiple arrays into one array.

combine(['foo'], ['bar', 'baz'], [1, 2]) // => ['foo', 'bar', 'baz', 1, 2]

compact(array)

Returns a copy of the array with all falsy values removed.

compact([0, 1, false, 2, '', 3]) // => [1, 2, 3]

contains(array, value)

Returns true if the value is present in the array.

contains([1, 2, 3], 3) // => true

difference(array, others)

Similar to without, but returns the values from array that are not present in the other arrays.

difference([1, 2, 3, 4, 5], [5, 2, 10]) // => [1, 3, 4]

head(array)

Returns the first element of an array.

head(['foo', 'bar']) // => 'foo'

initial(array)

Returns everything but the last entry of the array.

initial([3, 2, 1]) // => [3, 2]

intersection(arrays)

Computes the list of values that are the intersection of all the arrays. Each value in the result is present in each of the arrays.

intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]) // => [1, 2]

last(array)

Returns the last element of an array.

last(['foo', 'bar' ]) // => 'bar'

sortedIndex(array, value)

Determine the index at which the value should be inserted into the array in order to maintain the array's sorted order.

sortedIndex([10, 20, 30, 40, 50], 35) // => 3

tail(array)

Returns everything but the first entry of the array.

tail(['foo', 'bar', 'baz']) // => ['bar', 'baz']

toArray(arrayLike)

Returns a real Array. Useful for transmuting the arguments object.

Array.isArray((() => toArray(arguments))('foo', 'bar')) // => true

union(arrays)

Computes the union of the passed-in arrays: the list of unique items, in order, that are present in one or more of the arrays.

union([1, 2, 3], [101, 2, 1, 10], [2, 1]) // => [1, 2, 3, 101, 10]

unique(array)

Produces a duplicate-free version of the array.

unique([1, 2, 1, 3, 1, 4]) // => [1, 2, 3, 4]

without(array, values)

Returns a copy of the array with all instances of the values removed.

without([1, 2, 1, 0, 3, 1, 4], 0, 1) // => [2, 3, 4]

getValues(object)

Returns an array with the object's values.

getValues({ foo: 'bar', hello: 'world' }) // => ['bar', 'world']

merge(objects)

Combine multiple objects into a new object.

merge({ foo: 'bar' }, { hello: 'world' }) // => { foo: 'bar', hello: 'world' }

toMap(object)

Convert an Object to a Map.

toMap({ name: 'Dalibor', age: 40 }) // => Map { name: 'Dalibor', age: 40 }

min(array)

Returns the minimum value in the array.

min([10, 50, 30]) // => 10

max(array)

Returns the maximum value in the array.

max([10, 50, 30]) // => 50

sum(array)

Returns the sum of all values in the array.

sum([1, 2, 3]) // => 6

product(array)

Returns the product of all values in the array.

product([2, 5, 10]) // => 100

not(function)

Creates a new function returning the opposite of the function provided as its argument.

const isNull = x => x == null
const isSet = not(isNull)
isSet(undefined) // => false

maybe(function)

Returns a new function that won't execute if not enough arguments are provided.

let greet = (message, name) => console.log(message + ' ' + name)
let safeGreet = requireArguments(greet)

greet('Hi') // => 'Hi undefined'
safeGreet('Hi') // => Doesn't execute

once(function)

Returns a new function that won't execute more than once.

const greet = () => console.log('Hi')
const greetOnce = once(greet)
greetOnce() // => 'Hi'
greetOnce() // => Doesn't execute

curry(function)

Curries a function.

const add = curry((a, b) => a + b)
add(2, 3) // => 5
add(2)(3) // => 5

pipeline(functions)

Returns the composition of multiple functions from left to right.

const plus1 = a => a + 1
const mult2 = a => a * 2
let addThenMult = pipeline(plus1, mult2)
addThenMult(5) // => 12

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.