Summarize an object with Object.entries.

object-entries-summary `Object.entries` turns an object's own properties into key-value pairs. A loop can then build a compact summary.

Object Entries Summary

bonus
object_entries_summary.js
Replay: real traced execution (multi-file project)
const bonus = 2;
const scores = { base: 10, bonus };
const parts = [];

for (const entry of Object.entries(scores)) {
  const key = entry[0];
  const value = entry[1];
  parts.push(key + "=" + value);
}

console.log("bonus=" + bonus);
console.log("summary=" + parts.join(";"));
const bonus = 0;
const scores = { base: 10, bonus };
const parts = [];

for (const entry of Object.entries(scores)) {
  const key = entry[0];
  const value = entry[1];
  parts.push(key + "=" + value);
}

console.log("bonus=" + bonus);
console.log("summary=" + parts.join(";"));
const bonus = 5;
const scores = { base: 10, bonus };
const parts = [];

for (const entry of Object.entries(scores)) {
  const key = entry[0];
  const value = entry[1];
  parts.push(key + "=" + value);
}

console.log("bonus=" + bonus);
console.log("summary=" + parts.join(";"));
  1. bonus ← 2

    1const bonus→ 2 = 2; //@bonus=0, 52const scores = { base: 10, bonus };
  2. scores ← [object Object]

    1const bonus = 2; //@bonus=0, 52const scores→ [object Object] = { base: 10, bonus };3const parts = [];
  3. parts ← (empty)

    1const bonus = 2; //@bonus=0, 52const scores = { base: 10, bonus };3const parts→ (empty) = [];
  4. key ← base, entry[0] ← base

    5for (const entry of Object.entries(scores)) {6  const key→ base = entry[0]→ base;7  const value = entry[1];
    values this stepbase,10entry
  5. value ← 10, entry[1] ← 10

    5for (const entry of Object.entries(scores)) {6  const key = entry[0];7  const value→ 10 = entry[1]→ 10;8  parts.push(key + "=" + value);
    values this stepbase,10entry
  6. parts ← base=10, key ← base

    6  const key = entry[0];7  const value = entry[1];8  parts.push(key→ base + "=" + value10);9}
    values this step(empty) base=10parts
  7. key ← bonus, entry[0] ← bonus

    5for (const entry of Object.entries(scores)) {6  const key→ bonus = entry[0]→ bonus;7  const value = entry[1];
    values this stepbonus,2entry
  8. value ← 2, entry[1] ← 2

    5for (const entry of Object.entries(scores)) {6  const key = entry[0];7  const value→ 2 = entry[1]→ 2;8  parts.push(key + "=" + value);
    values this stepbonus,2entry
  9. parts ← base=10,bonus=2, key ← bonus

    6  const key = entry[0];7  const value = entry[1];8  parts.push(key→ bonus + "=" + value2);9}
    values this stepbase=10 base=10,bonus=2parts
  10. console.log("bonus=" + bonus);

    8  parts.push(key + "=" + value);9}1011console.log("bonus=" + bonus2);12console.log("summary=" + parts.join(";"));
    outputbonus=2
  11. console.log("summary=" + parts.join(";"));

    11console.log("bonus=" + bonus);12console.log("summary=" + partsbase=10,bonus=2.join(";"));
    outputsummary=base=10;bonus=2
  1. bonus ← 0

    1const bonus→ 0 = 0;2const scores = { base: 10, bonus };
  2. scores ← [object Object]

    1const bonus = 0;2const scores→ [object Object] = { base: 10, bonus };3const parts = [];
  3. parts ← (empty)

    1const bonus = 0;2const scores = { base: 10, bonus };3const parts→ (empty) = [];
  4. key ← base, entry[0] ← base

    5for (const entry of Object.entries(scores)) {6  const key→ base = entry[0]→ base;7  const value = entry[1];
    values this stepbase,10entry
  5. value ← 10, entry[1] ← 10

    5for (const entry of Object.entries(scores)) {6  const key = entry[0];7  const value→ 10 = entry[1]→ 10;8  parts.push(key + "=" + value);
    values this stepbase,10entry
  6. parts ← base=10, key ← base

    6  const key = entry[0];7  const value = entry[1];8  parts.push(key→ base + "=" + value10);9}
    values this step(empty) base=10parts
  7. key ← bonus, entry[0] ← bonus

    5for (const entry of Object.entries(scores)) {6  const key→ bonus = entry[0]→ bonus;7  const value = entry[1];
    values this stepbonus,0entry
  8. value ← 0, entry[1] ← 0

    5for (const entry of Object.entries(scores)) {6  const key = entry[0];7  const value→ 0 = entry[1]→ 0;8  parts.push(key + "=" + value);
    values this stepbonus,0entry
  9. parts ← base=10,bonus=0, key ← bonus

    6  const key = entry[0];7  const value = entry[1];8  parts.push(key→ bonus + "=" + value0);9}
    values this stepbase=10 base=10,bonus=0parts
  10. console.log("bonus=" + bonus);

    8  parts.push(key + "=" + value);9}1011console.log("bonus=" + bonus0);12console.log("summary=" + parts.join(";"));
    outputbonus=0
  11. console.log("summary=" + parts.join(";"));

    11console.log("bonus=" + bonus);12console.log("summary=" + partsbase=10,bonus=0.join(";"));
    outputsummary=base=10;bonus=0
  1. bonus ← 5

    1const bonus→ 5 = 5;2const scores = { base: 10, bonus };
  2. scores ← [object Object]

    1const bonus = 5;2const scores→ [object Object] = { base: 10, bonus };3const parts = [];
  3. parts ← (empty)

    1const bonus = 5;2const scores = { base: 10, bonus };3const parts→ (empty) = [];
  4. key ← base, entry[0] ← base

    5for (const entry of Object.entries(scores)) {6  const key→ base = entry[0]→ base;7  const value = entry[1];
    values this stepbase,10entry
  5. value ← 10, entry[1] ← 10

    5for (const entry of Object.entries(scores)) {6  const key = entry[0];7  const value→ 10 = entry[1]→ 10;8  parts.push(key + "=" + value);
    values this stepbase,10entry
  6. parts ← base=10, key ← base

    6  const key = entry[0];7  const value = entry[1];8  parts.push(key→ base + "=" + value10);9}
    values this step(empty) base=10parts
  7. key ← bonus, entry[0] ← bonus

    5for (const entry of Object.entries(scores)) {6  const key→ bonus = entry[0]→ bonus;7  const value = entry[1];
    values this stepbonus,5entry
  8. value ← 5, entry[1] ← 5

    5for (const entry of Object.entries(scores)) {6  const key = entry[0];7  const value→ 5 = entry[1]→ 5;8  parts.push(key + "=" + value);
    values this stepbonus,5entry
  9. parts ← base=10,bonus=5, key ← bonus

    6  const key = entry[0];7  const value = entry[1];8  parts.push(key→ bonus + "=" + value5);9}
    values this stepbase=10 base=10,bonus=5parts
  10. console.log("bonus=" + bonus);

    8  parts.push(key + "=" + value);9}1011console.log("bonus=" + bonus5);12console.log("summary=" + parts.join(";"));
    outputbonus=5
  11. console.log("summary=" + parts.join(";"));

    11console.log("bonus=" + bonus);12console.log("summary=" + partsbase=10,bonus=5.join(";"));
    outputsummary=base=10;bonus=5