Skip to content

Add support for traversing native Map objects like objects #96

Open
@Fryuni

Description

@Fryuni

✨ Feature request

JSON pointers should traverse native Map objects like plain and objects.

Motivation

Plain objects are inefficient and ill advised when dealing with large number of keys or when handling dynamic, possibly untrusted, keys.

To allow an application to traverse a path using keys provided by the user requires a lot of care and consideration to create an appropriate object.

Example

The API would remain the same, but now also support maps.

const map = new Map([
  ['foo', 'bar']
]);

JsonPointer.parse('/foo').get(map)
// => 'bar'

Alternatives

The safe and correct alternative to handle user-provided keys is to construct a prototype-free object using Object.create(null) and populating it iteratively. Besides inconvenient and unergonomic, such operation is linear at best and linearithmic at worst due to how the representation of plain objects are optimized to have few, statically known, unchanging keys.

Additional context

https://www.builder.io/blog/maps

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovement of existing features

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions