Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mapfun

Package Overview
Dependencies
Maintainers
0
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mapfun

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.

  • 0.9.20
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
13
increased by44.44%
Maintainers
0
Weekly downloads
 
Created
Source

📝 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 .

Keywords

FAQs

Package last updated on 15 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc