Skip to main content
Module

x/rambda/source/map.js

Faster and smaller alternative to Ramda
Latest
File
import { INCORRECT_ITERABLE_INPUT } from './_internals/constants.js'import { isArray } from './_internals/isArray.js'import { keys } from './_internals/keys.js'
export function mapArray( fn, list, isIndexed = false){ let index = 0 const willReturn = Array(list.length)
while (index < list.length){ willReturn[ index ] = isIndexed ? fn(list[ index ], index) : fn(list[ index ])
index++ }
return willReturn}
export function mapObject(fn, obj){ if (arguments.length === 1){ return _obj => mapObject(fn, _obj) } let index = 0 const objKeys = keys(obj) const len = objKeys.length const willReturn = {}
while (index < len){ const key = objKeys[ index ] willReturn[ key ] = fn( obj[ key ], key, obj ) index++ }
return willReturn}
export const mapObjIndexed = mapObject
export function map(fn, iterable){ if (arguments.length === 1) return _iterable => map(fn, _iterable) if (!iterable){ throw new Error(INCORRECT_ITERABLE_INPUT) }
if (isArray(iterable)) return mapArray(fn, iterable)
return mapObject(fn, iterable)}