Compatibility with Lodash
// es-toolkit/compat aims to provide 100% feature parity with lodash
import { chunk } from 'es-toolkit/compat';
chunk([1, 2, 3, 4], 0);
// Returns [], which is identical to lodash
For maximum compatibility with lodash
, use es-toolkit/compat
, a compatibility layer that bridges the gap between the two libraries.
This module is designed to provide an identical API to lodash
, making it easier to switch between the two libraries.
es-toolkit/compat
has been thoroughly tested with real test cases from lodash
.
It's important to note that es-toolkit/compat
may have a slight performance impact and a larger bundle size compared to the original es-toolkit
. This module is designed to facilitate a smooth transition and should be replaced with the original es-toolkit
for optimal performance once the migration is complete.
Design Principles
INFO
Design principles are subject to change.
Our compatibility layer aims to achieve feature parity with 100% accuracy for:
- Features that are written as a test case in lodash.
- Features that can be inferred from types of
@types/lodash
or@types/lodash-es
.
However, the following are out of scope for es-toolkit/compat
:
- Implicit type conversions, such as converting an empty string to zero or false.
- Functions that have specialized implementations for specific types of arrays, like sortedUniq.
- Handling cases where internal object prototypes, like
Array.prototype
, have been modified. - Managing cases with JavaScript realms.
- Method chaining support through "Seq" methods.
Implementation Status
INFO
The following emojis indicate the status of each feature:
- ✅: Completed (The function is fully implemented and has passed all tests with lodash test code.)
- 📝: In Review (The function is implemented but hasn't been tested with lodash test code yet.)
- ❌: Not Implemented (The function hasn't been implemented.)
Even if a feature is marked "in review," it might already be under review to ensure it matches lodash perfectly, and it could already offer the same functionality.
"Array" method
Function Name | Implementation Status |
---|---|
chunk | ✅ |
compact | ✅ |
concat | ✅ |
difference | ✅ |
differenceBy | 📝 |
differenceWith | 📝 |
drop | ✅ |
dropRight | ✅ |
dropRightWhile | 📝 |
dropWhile | 📝 |
fill | ✅ |
findIndex | ✅ |
findLastIndex | ❌ |
flatten | ✅ |
flattenDeep | ✅ |
flattenDepth | ✅ |
fromPairs | ✅ |
head | ✅ |
indexOf | ✅ |
initial | ✅ |
intersection | 📝 |
intersectionBy | 📝 |
intersectionWith | 📝 |
join | 📝 |
last | ✅ |
lastIndexOf | ❌ |
nth | ❌ |
pull | ❌ |
pullAll | ❌ |
pullAllBy | ❌ |
pullAllWith | ❌ |
pullAt | 📝 |
remove | ❌ |
reverse | ❌ |
slice | ❌ |
sortedIndex | No support |
sortedIndexBy | No support |
sortedIndexOf | No support |
sortedLastIndex | No support |
sortedLastIndexBy | No support |
sortedLastIndexOf | No support |
sortedUniq | No support |
sortedUniqBy | No support |
tail | ✅ |
take | ✅ |
takeRight | ✅ |
takeRightWhile | 📝 |
takeWhile | 📝 |
union | 📝 |
unionBy | 📝 |
unionWith | 📝 |
uniq | ✅ |
uniqBy | 📝 |
uniqWith | 📝 |
unzip | 📝 |
unzipWith | 📝 |
without | ✅ |
xor | 📝 |
xorBy | 📝 |
xorWith | 📝 |
zip | 📝 |
zipObject | 📝 |
zipObjectDeep | ✅ |
zipWith | 📝 |
"Collection" method
Function Name | Implementation Status |
---|---|
countBy | 📝 |
every | ❌ |
filter | ❌ |
find | ✅ |
findLast | ❌ |
flatMap | 📝 |
flatMapDeep | 📝 |
flatMapDepth | ❌ |
forEach | ❌ |
forEachRight | 📝 |
groupBy | 📝 |
includes | ❌ |
invokeMap | ❌ |
keyBy | 📝 |
map | ❌ |
orderBy | ✅ |
partition | 📝 |
reduce | ❌ |
reduceRight | ❌ |
reject | ❌ |
sample | 📝 |
sampleSize | 📝 |
shuffle | 📝 |
size | ✅ |
some | ✅ |
sortBy | ✅ |
"Date" method
Function Name | Implementation Status |
---|---|
now | ❌ |
"Function" method
Function Name | Implementation Status |
---|---|
after | 📝 |
ary | ✅ |
before | 📝 |
bind | ✅ |
bindKey | 📝 |
curry | ❌ |
curryRight | ❌ |
debounce | 📝 |
defer | ❌ |
delay | 📝 |
flip | ❌ |
memoize | 📝 |
negate | 📝 |
once | 📝 |
overArgs | ❌ |
partial | 📝 |
partialRight | 📝 |
rearg | ❌ |
rest | ✅ |
spread | ✅ |
throttle | 📝 |
unary | 📝 |
wrap | ❌ |
"Lang" method
"Math" method
Function Name | Implementation Status |
---|---|
add | ❌ |
ceil | ❌ |
divide | ❌ |
floor | ❌ |
max | ✅ |
maxBy | 📝 |
mean | 📝 |
meanBy | 📝 |
min | ✅ |
minBy | 📝 |
multiply | ❌ |
round | 📝 |
subtract | ❌ |
sum | 📝 |
sumBy | 📝 |
"Number" method
Function Name | Implementation Status |
---|---|
clamp | 📝 |
inRange | 📝 |
random | 📝 |
"Object" method
Function Name | Implementation Status |
---|---|
assign | ❌ |
assignIn | ❌ |
assignInWith | ❌ |
assignWith | ❌ |
at | 📝 |
create | ❌ |
defaults | ❌ |
defaultsDeep | ❌ |
findKey | ❌ |
findLastKey | ❌ |
forIn | ❌ |
forInRight | ❌ |
forOwn | ❌ |
forOwnRight | ❌ |
functions | ❌ |
functionsIn | ❌ |
get | ✅ |
has | ✅ |
hasIn | ❌ |
invert | ✅ |
invertBy | ❌ |
invoke | ❌ |
keys | ❌ |
keysIn | ❌ |
mapKeys | ✅ |
mapValues | ✅ |
merge | ✅ |
mergeWith | ✅ |
omit | 📝 |
omitBy | 📝 |
pick | 📝 |
pickBy | 📝 |
result | ❌ |
set | ✅ |
setWith | ❌ |
toPairs | ❌ |
toPairsIn | ❌ |
transform | ❌ |
unset | ❌ |
update | ❌ |
updateWith | ❌ |
values | ❌ |
valuesIn | ❌ |
"String" method
Function Name | Implementation Status |
---|---|
camelCase | 📝 |
capitalize | 📝 |
deburr | 📝 |
endsWith | ✅ |
escape | 📝 |
escapeRegExp | 📝 |
kebabCase | 📝 |
lowerCase | 📝 |
lowerFirst | 📝 |
pad | 📝 |
padEnd | ✅ |
padStart | ✅ |
parseInt | ❌ |
repeat | ✅ |
replace | ❌ |
snakeCase | 📝 |
split | ❌ |
startCase | 📝 |
startsWith | ✅ |
template | ❌ |
toLower | ❌ |
toUpper | ❌ |
trim | ❌ |
trimEnd | ❌ |
trimStart | ❌ |
truncate | ❌ |
unescape | 📝 |
upperCase | ❌ |
upperFirst | 📝 |
words | ❌ |
"Util" method
Function Name | Implementation Status |
---|---|
attempt | ✅ |
bindAll | ❌ |
cond | ❌ |
conforms | ❌ |
constant | ❌ |
defaultTo | ❌ |
flow | ❌ |
flowRight | ❌ |
identity | ❌ |
iteratee | ❌ |
matches | ✅ |
matchesProperty | ✅ |
method | ❌ |
methodOf | ❌ |
mixin | No support |
noConflict | No support |
noop | 📝 |
nthArg | ❌ |
over | ❌ |
overEvery | ❌ |
overSome | ❌ |
property | ✅ |
propertyOf | ❌ |
range | 📝 |
rangeRight | ❌ |
runInContext | No support |
stubArray | ❌ |
stubFalse | ❌ |
stubObject | ❌ |
stubString | ❌ |
stubTrue | ❌ |
times | ❌ |
toPath | ❌ |
uniqueId | ❌ |