Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
lodash vs Map
(version: 1)
consolidate
Comparing performance of:
Map vs lodash
Created:
one year ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
var body = { items: [ { goodsCode: 'A', quantity: 1, options: [ { goodsCode: 'X', quantity: 1, options: [ { goodsCode: 'Z', quantity: 2, }, ], }, ], }, { goodsCode: 'A', quantity: 2, options: [ { goodsCode: 'X', quantity: 2, options: [ { goodsCode: 'Z', quantity: 3, }, ], }, ], }, ], }
Tests:
Map
function consolidateCartItems({ items }) { const uniqItemsMap = items.reduce((acc, item) => { const prevItem = acc.get(item.goodsCode); if (prevItem) { const options = (prevItem.options ?? []).concat(item?.options ?? []); const hasOptions = options.length > 0; const newItem = { ...prevItem, quantity: prevItem.quantity + item.quantity, }; if (hasOptions) { newItem.options = consolidateCartItems({ items: options }); } acc.set(item.goodsCode, newItem); } else { acc.set(item.goodsCode, item); } return acc; }, new Map()); return [...uniqItemsMap.values()]; } consolidateCartItems(body)
lodash
function consolidateCartItems({ items }) { return ( _.chain(items) // goodsCode를 기준으로 그룹화 .groupBy('goodsCode') .map((group, goodsCode) => { // 그룹 내 전체 수량 합산 const quantity = _.sumBy(group, 'quantity'); // 옵션들을 한 곳에 모은 후 존재 여부 확인 const mergedOptions = _.chain(group) .flatMap('options') // 모든 옵션을 평탄화 .filter(Boolean) // null/undefined 필터링 .thru((opts) => opts.length > 0 ? consolidateCartItems({ items: opts }) // 재귀 병합 : undefined, ) .value(); // 병합된 항목 생성 (옵션은 있을 경우에만 포함) return { goodsCode, quantity, ...(mergedOptions ? { options: mergedOptions } : {}), }; }) .value() ); } consolidateCartItems(body)
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
Map
lodash
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Browser/OS:
Chrome 135 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
Map
4096903.2 Ops/sec
lodash
561977.2 Ops/sec
Related benchmarks:
Test Immutable ToJS vs get
Test Immutable ToJS vs single get
Merge array test
Merge array test 2
Looping variable vs elements
Spread vs if/else vs switch/break
For vs Map test 27/01/25
lodash vs Map - v2
multi-order consolidateCartItems lodash vs Map
Comments
Confirm delete:
Do you really want to delete benchmark?