Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36
Chrome 94
Mac OS X 10.15.7
Desktop
3 years ago
Test name Executions per second
Lo-Dash sortBy() 873086.8 Ops/sec
Underscore sortBy() 880777.5 Ops/sec
Vanilla sort() 3258549.5 Ops/sec
HTML Preparation code:
x
 
1
2
<script src='https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js'></script>
3
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
 
let fruits = [
  {name:"mango", amount: 1},
  {name:"apple", amount: 4},
  {name:"banana", amount: 2},
  {name:"pineapple", amount: 2},
  {name:"apple", amount: 2}
]
const sortBy = (key) => {
  return (a, b) => (a[key] > b[key]) ? 1 : ((b[key] > a[key]) ? -1 : 0);
};
fruits.sort(sortBy("name"));
Tests:
  • Lo-Dash sortBy()

     
    let fruits = [
      {name:"mango", amount: 1},
      {name:"apple", amount: 4},
      {name:"banana", amount: 2},
      {name:"pineapple", amount: 2},
      {name:"apple", amount: 2}
    ]
    _.sortBy(fruits, 'name')
  • Underscore sortBy()

     
    let fruits = [
      {name:"mango", amount: 1},
      {name:"apple", amount: 4},
      {name:"banana", amount: 2},
      {name:"pineapple", amount: 2},
      {name:"apple", amount: 2}
    ]
    _.sortBy(fruits, 'name')
  • Vanilla sort()

     
    let fruits = [
      {name:"mango", amount: 1},
      {name:"apple", amount: 4},
      {name:"banana", amount: 2},
      {name:"pineapple", amount: 2},
      {name:"apple", amount: 2}
    ]
    const sortBy = (key) => {
      return (a, b) => (a[key] > b[key]) ? 1 : ((b[key] > a[key]) ? -1 : 0);
    };
    fruits.sort(sortBy("name"));