Run details:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
Chrome 96
Windows
Desktop
3 years ago
Test name Executions per second
forEach concat 19.9 Ops/sec
Reduce push 56.2 Ops/sec
Reduce concat 56.9 Ops/sec
forEach push 52.5 Ops/sec
Tests:
  • forEach concat

    x
     
    const a = [...Array(1000)].map(() => ({
        nested: Array.from({length: 40}, () => Math.floor(Math.random() * 40))
    }));
    let b = [];
    a.forEach((item) => {
      b = b.concat(item.nested);
    });
  • Reduce push

     
    const a = [...Array(1000)].map(() => ({
        nested: Array.from({length: 40}, () => Math.floor(Math.random() * 40))
    }));
    const b = a.reduce((acc, item) => {
      acc.push(...item.nested);
      
      return acc
    }, []);
  • Reduce concat

     
    const a = [...Array(1000)].map(() => ({
        nested: Array.from({length: 40}, () => Math.floor(Math.random() * 40))
    }));
    const b = a.reduce((acc, item) => {
      acc.concat(item.nested);
      
      return acc
    }, []);
  • forEach push

     
    const a = [...Array(1000)].map(() => ({
        nested: Array.from({length: 40}, () => Math.floor(Math.random() * 40))
    }));
    let b = [];
    a.forEach((item) => {
      b.push(...item.nested);
    });