📝 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
const {mapfun} = require("mapfun");
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] },
})
);
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}]))
Advanced Examples
const A=new Map([["a",1],["b",2]]);
console.log(mapfun(n=>n+1,{},A));
console.log(mapfun(n=>n+1,{key:true},A));
console.log(mapfun(n=>n+1,{value:false},A));
console.log(mapfun(n=>n+1,{key:true,value:false},A));
const pow=(...x)=>{
n=x.pop();
return mapfun(a=>Math.pow(a,n),{},...x)
}
console.log(pow(1,2,{y:2},3))
Supported datatypes
Datatype | Support |
---|
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
License
This projet is licensed under the terms of MIT License .