function findAuditDetailItemKeyDiffs(auditId, baseEntry, compareEntry, headings) {
  /** @type {Array<LHCI.AuditDiff>} */
  const diffs = [];

  for (const key of Object.keys(baseEntry.item)) {
    const baseValue = baseEntry.item[key];
    const compareValue = compareEntry.item[key];
    // If these aren't numeric, comparable values, skip the key.
    if (typeof baseValue !== 'number' || typeof compareValue !== 'number') continue;
    // If these aren't shown in the table, skip the key.
    if (!headings.some(heading => heading.key === key)) continue;

    diffs.push(
      createAuditDiff({
        auditId,
        type: 'itemDelta',
        itemKey: key,
        baseItemIndex: baseEntry.index,
        compareItemIndex: compareEntry.index,
        baseValue,
        compareValue,
      })
    );
  }

  return diffs;
}
@param {string} auditId
@param {DetailItemEntry} baseEntry
@param {DetailItemEntry} compareEntry
@param {Array<{key: string | null}>} headings
@return {Array<LHCI.AuditDiff>}