Standard Library Utilities
Object Entries Summary
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
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(";"));
bonus ← 2
1const bonus→ 2 = 2; //@bonus=0, 52const scores = { base: 10, bonus };scores ← [object Object]
1const bonus = 2; //@bonus=0, 52const scores→ [object Object] = { base: 10, bonus };3const parts = [];parts ← (empty)
1const bonus = 2; //@bonus=0, 52const scores = { base: 10, bonus };3const parts→ (empty) = [];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,10entryvalue ← 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,10entryparts ← 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=10partskey ← 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,2entryvalue ← 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,2entryparts ← 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=2partsconsole.log("bonus=" + bonus);
8 parts.push(key + "=" + value);9}1011console.log("bonus=" + bonus2);12console.log("summary=" + parts.join(";"));outputbonus=2console.log("summary=" + parts.join(";"));
11console.log("bonus=" + bonus);12console.log("summary=" + partsbase=10,bonus=2.join(";"));outputsummary=base=10;bonus=2
bonus ← 0
1const bonus→ 0 = 0;2const scores = { base: 10, bonus };scores ← [object Object]
1const bonus = 0;2const scores→ [object Object] = { base: 10, bonus };3const parts = [];parts ← (empty)
1const bonus = 0;2const scores = { base: 10, bonus };3const parts→ (empty) = [];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,10entryvalue ← 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,10entryparts ← 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=10partskey ← 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,0entryvalue ← 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,0entryparts ← 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=0partsconsole.log("bonus=" + bonus);
8 parts.push(key + "=" + value);9}1011console.log("bonus=" + bonus0);12console.log("summary=" + parts.join(";"));outputbonus=0console.log("summary=" + parts.join(";"));
11console.log("bonus=" + bonus);12console.log("summary=" + partsbase=10,bonus=0.join(";"));outputsummary=base=10;bonus=0
bonus ← 5
1const bonus→ 5 = 5;2const scores = { base: 10, bonus };scores ← [object Object]
1const bonus = 5;2const scores→ [object Object] = { base: 10, bonus };3const parts = [];parts ← (empty)
1const bonus = 5;2const scores = { base: 10, bonus };3const parts→ (empty) = [];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,10entryvalue ← 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,10entryparts ← 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=10partskey ← 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,5entryvalue ← 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,5entryparts ← 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=5partsconsole.log("bonus=" + bonus);
8 parts.push(key + "=" + value);9}1011console.log("bonus=" + bonus5);12console.log("summary=" + parts.join(";"));outputbonus=5console.log("summary=" + parts.join(";"));
11console.log("bonus=" + bonus);12console.log("summary=" + partsbase=10,bonus=5.join(";"));outputsummary=base=10;bonus=5