Run details:
Mozilla/5.0 (iPad; CPU OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/96.0.4664.53 Mobile/15E148 Safari/604.1
Chrome Mobile iOS 96
iOS 14.8
Tablet
3 years ago
Test name Executions per second
reduce with concat 8880006.0 Ops/sec
flatMap 2469770.5 Ops/sec
Script Preparation code:
x
 
var arr = [
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
  {
    loanId: 1077579,
    missingDocs: [
      { docTypeID: 4, docType: "CEMA" },
      { docTypeID: 14, docType: "Policy" },
    ],
  },
];
Tests:
  • reduce with concat

     
    arr.reduce((acc, loan) => acc + loan.missingDocs.length, 0)
  • flatMap

     
    arr.flatMap(loan => loan.missingDocs).length