0.9.20 β€’ Published 7 months ago

mapfun v0.9.20

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

πŸ“ Javascript provides a built-in Math module with various functions.

⚠️However, there is room for improvement in terms of efficiency. For instance, the Math.sqrt(x) function can calculate the square root of a number x, but it has limitations such as the inability to accept multiple parameters and the inability to map the function to different data types like Arrays and Objects.

πŸ’‘ In zikojs, I have addressed these limitations, providing a more versatile and efficient solution using the mapfun utility which is a function that applies a mapping function to an infinite number of input elements, with options to skip certain elements and selectively apply the mapping to keys and/or values of objects.

πŸ’‘ The mapfun function has been developed in JavaScript and Python, offering the same functionality in different programming languages.

Install

npm install mapfun

Import

  • common js :

const {mapfun} = require("mapfun");
  • es module

import {mapfun} from "mapfun" 

unpkg

<script src="https://unpkg.com/mapfun@latest/dist/mapfun.js"></script>

Syntax

mapfun(fun,{skip,key,value},...X)

Arguments

  • fun : The mapping function that will be applied to each element in the input elements.
  • ...X :The elements to be mapped .
  • { skip , key , value } : Object with three optional properties :
    • skip : specifies the elements to skip during the mapping process.
    • key : boolean flag indicating whether to apply the mapping function to the keys of objects or not. The default value is false
    • value : boolean flag indicating whether to apply the mapping function to the values of objects or not. The default value is true

Examples

console.log(
  mapfun(n => n + 2,{}, 1,"a", [1, 2, 3], true, {
    a: 2,
    b: 3,
    c: { d: 3, e: [1, 3, 4] },
  })
);
/* Expected log
[
  3,
  "a2",
  [3, 4, 5],
  3,
  {
    a: 4,
    b: 5,
    c: {
      d: 5,
      e: [3, 5, 6],
    },
  },
];
*/
const PI=Math.PI
const sin=(...args)=>mapfun(Math.sin,{},...args)
console.log(sin(0,PI/4,[0,PI/6,PI/4,{x:PI/8,y:PI/12}]))
/* Expected log
[
  0,
  0.7071067811865475,
  [
    0,
    0.49999999999999994,
    0.7071067811865475,
    {
      x: 0.3826834323650898,
      y: 0.25881904510252074,
    },
  ],
];
*/

Advanced Examples

 const A=new Map([["a",1],["b",2]]);
 // Map { 'a' => 1, 'b' => 2 }
 console.log(mapfun(n=>n+1,{},A));
 /* Expected log 
   Map { 'a' => 2, 'b' => 3 }
 */
 console.log(mapfun(n=>n+1,{key:true},A));
 /* Expected log 
   Map { 'a1' => 2, 'b1' => 3 }
 */
 console.log(mapfun(n=>n+1,{value:false},A));
 /* Expected log 
   Map { 'a' => 1, 'b' => 2 }
 */
 console.log(mapfun(n=>n+1,{key:true,value:false},A));
 /* Expected log 
   Map { 'a1' => 1, 'b1' => 2 }
 */
const pow=(...x)=>{
n=x.pop();
   return mapfun(a=>Math.pow(a,n),{},...x)
}
console.log(pow(1,2,{y:2},3))

Supported datatypes

DatatypeSupport
Numberβœ…
Stringβœ…
Booleanβœ…
Nullβœ…
NaNβœ…
Undefinedβœ…
BigIntβœ…
Arrayβœ…
Objectβœ…
Mapβœ…
WeakMap❌
Setβœ…
WeakSet❌
ArrayBufferβœ…
Symbol❌

⚠️

  • mapfun with ArrayBuffer returns Array not ArrayBuffer .
  • BigInt and Number are not interchangeable, and you cannot directly perform arithmetic operations between them .

Alternatives

Python

License

This projet is licensed under the terms of MIT License .

0.9.20

7 months ago

0.9.18

7 months ago

0.9.19

7 months ago

0.9.14

2 years ago

0.9.17

2 years ago

0.9.13

2 years ago

0.9.12

2 years ago

0.9.11

2 years ago

0.9.3

2 years ago

0.9.2

2 years ago

0.9.1

2 years ago

0.9.0

2 years ago