2.0.1 • Published 2 years ago

eode v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Eode

Eode is an amazing, hybrid, JavaScript package. It includes advanced functions for arrays and objects that lodash doesn't have!

Installation

npm i eode

Usage

CJS

const _ = require('eode')

ESM

import _ from "eode"

Examples

Eode offers the powerful _.must function. It allows dynamic filtration and distillation of arrays of objects. More functions will be added to eode in the future, but some of the best are shown below.

console.log(_.chunk([0, 'text', [], {}], 3))
// [[0, 'text', []], [{}]]

console.log(_.eq([], []))
console.log(_.eq([0, 'text'], [0, 'text']))
console.log(_.eq([0, 'text', [], {}], [0, 'text', [], {}]))
console.log(_.eq({}, {}))
console.log(_.eq({ a: 0 }, { a: 0 }))
console.log(_.eq({ a: 0, b: [] }, { a: 0, b: [] }))
// true

const users = [
  {
    name: 'John',
    age: 18,
    deleted: false
  },
  {
    name: 'Jane',
    age: 13,
    deleted: false
  },
  {
    name: 'Bob',
    age: 69,
    deleted: true
  },
]

console.log(_.filter(users, _.must({ age: '> 16' })))
// [{ name: 'John', age: 18, deleted: false }, { name: 'Bob', age: 69, deleted: true }]
console.log(_.filter(users, { age: 13 })) // _.matches shorthand
// [{ name: 'Jane', age: 18, deleted: false }]
console.log(_.filter(users, ['name', 'John'])) // _.matchesProperty shorthand
// [{ name: 'John', age: 18, deleted: false }]
console.log(_.filter(users, 'deleted')) // _.property shorthand
// [{ name: 'Bob', age: 69, deleted: true }]

console.log(_.find(users, _.must({ age: '> 16' })))
// { name: 'John', age: 18, deleted: false }
console.log(_.find(users, { age: 13 })) // _.matches shorthand
// { name: 'Jane', age: 18, deleted: false }
console.log(_.find(users, ['name', 'John'])) // _.matchesProperty shorthand
// { name: 'John', age: 18, deleted: false }
console.log(_.find(users, 'deleted')) // _.property shorthand
// { name: 'Bob', age: 69, deleted: true }

console.log(_.findIndexes(users, _.must({ age: '> 16' })))
// [0, 2]
console.log(_.findIndexes(users, { age: 13 })) // _.matches shorthand
// [1]
console.log(_.findIndexes(users, ['name', 'John'])) // _.matchesProperty shorthand
// [0]
console.log(_.findIndexes(users, 'deleted')) // _.property shorthand
// [2]

console.log(_.distill(users, _.must({ age: ['&&', '>= 13', '<= 18'] })))
// [[John, Jane], [Bob]]
console.log(_.distill(users, { age: 18 })) // _.matches shorthand
// Array of length 2
console.log(_.distill(users, ['name', 'John'])) // _.matchesProperty shorthand
// Array of length 2
console.log(_.distill(users, 'deleted')) // _.property shorthand
// Array of length 2

console.log(_.includes([0, 'text', [], {}], {}))
// true

console.log(_.unite([0, 'text', [], {}], [0, 'text'], [0, 'text', [], {}]))
// [0, 'text', [], {}, 0, 'text', 0, 'text', [], {}]
console.log(_.unite([0, 'text', [], {}], 'string'))
// [0, 'text', [], {}, 'string']

console.log(_.subtract([0, 'text', [], {}, [0, 1]], [0, []], [{}]))
// ['text', [0, 1]]

console.log(_.intersect([0, 'text', [], {}], [0, 'text'], ['text', {}]))
// ['text', 'text', 'text']

console.log(_.exclude([0, 'text', [], {}], [0, 'text'], ['text', {}]))
// [[]]

console.log(_.mapKeys({ apple: 'alpha', ball: 'beta' }, k => k[0]))
// { a: 'alpha', b: 'beta' }

console.log(_.mapValues({ apple: 'alpha', ball: 'beta' }, v => v[0]))
// { apple: 'a', ball: 'b' }

console.log(_.unique([0, 'text', [], {}, 'text', {}]))
// [0, 'text', [], {}]

for (let num of _.range(10, 0, 2)) {
  console.log(num)
}

console.log(_.search([[], {}, 'a', 'b', 'c'], {})) // binary search
// 1

console.log(_.shuffle([0, 1, 2, 3], 2))
// [2, 3, 0, 1]

console.log(_.zip(['id', 0, 1, 2], ['username', 'qaxt', 'bob', 'npm']))
// [['id', 'username'], [0, 'qaxt'], [1, 'bob'], [2, 'npm']]

console.log(_.indexes([0, 'text', [], {}, 'text', ['text']], 'text'))
// [1, 4]

console.log(_.last([0, 'text', [], {}]))
// {}
console.log(_.last(_.indexes([0, 'text', [], {}, 'text', ['text']], 'text')))
// 4

console.log(_.factors(-12))
// [1, -12, -1, 12, 2, -6, -2, 6, 3, -4, -3, 4]

console.log(_.insert([0, 'text', [], {}], 2, { a: 0 }))
// 

console.log(_.fromPairs([['a', 0], ['b', []]]))
// { a: 0, b: [] }

console.log(_.iterate([['id', 0, 1, 2], ['username', 'qaxt', 'bob', 'npm']], (a) => {
  return a
}))
// same output as _.zip(['id', 0, 1, 2], ['username', 'qaxt', 'bob', 'npm'])

const space = _.ndarray(2, 3)
console.log(space)
/*
{
  length: 2,
  dimensions: 3,
  data: [
    0, 1, 2, 3,
    4, 5, 6, 7
  ]
} 
*/

console.log(_.ndindex([1, 0, 1], space.length))
// 5
console.log(space.data[_.ndindex([1, 0, 1], space.length)])
// [1, 0, 1]

console.log(_.ndpoint(5, space.length, space.dimensions))
// [1, 0, 1]