Skip to content

Commit

Permalink
modifies Struct#elements() to return all field values (#754)
Browse files Browse the repository at this point in the history
  • Loading branch information
desaikd committed Apr 20, 2023
1 parent a7541b0 commit 3f1b469
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 9 deletions.
6 changes: 1 addition & 5 deletions src/dom/Struct.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,7 @@ export class Struct extends Value(
}

elements(): Value[] {
let singleValueFields = Object.create(null);
for (const [fieldName, values] of this.allFields()) {
singleValueFields[fieldName] = values[values.length - 1];
}
return Object.values(singleValueFields);
return Object.values(this._fields).flat() as Value[];
}

[Symbol.iterator](): IterableIterator<[string, Value]> {
Expand Down
10 changes: 6 additions & 4 deletions test/dom/dom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -544,11 +544,13 @@ describe("DOM", () => {
assert.isTrue(s1.getAll("name", "middle")![1].equals("Bob"));
assert.equal(2, s1.getAll("name", "middle")!.length);

// elements returns values for given Struct where for a fieldname it only contains the last value
// instead of an array of all values
assert.equal(41, s.elements()[0]);
// elements returns values for given Struct where for a fieldname returns all its values
assert.equal(55, s.elements()[0]);
assert.isFalse(Array.isArray(s.elements()[0]));
assert.equal("Jessie", s1.elements()[0]["first"]);
assert.equal("John", s1.elements()[0]["first"]);
assert.equal("Jessie", s1.elements()[1]["first"]);
assert.equal(41, +s1.elements()[2]);
assert.equal(3, s1.elements().length);

// Iteration
for (let [fieldName, value] of s) {
Expand Down

0 comments on commit 3f1b469

Please sign in to comment.