ixfx
    Preparing search index...
    • Returns a projection of node as a dynamic traversable. This means that the tree structure is dynamically created as last-minute as possible.

      The type when calling getValue() is TraverseObjectEntryStatic:

      type EntryStatic = Readonly<{ 
      name: string,
      value: any
      ancestors: string[]
      }>

      Note that the object identity of TraversableTree return results is not stable. This is because they are created on-the-fly by reading fields of node.

      const c1 = [ ...asDynamicTraversable(someObject).children() ];
      const c2 = [ ...asDynamicTraversable(someObject).children() ];

      // Object identity is not the same
      c1[ 0 ] === c1[ 0 ]; // false

      // ...even though its referring to the same value
      c1[ 0 ].getValue() === c1[ 0 ].getValue(); // true

      Instead .getIdentity() to get a stable identity:

      c1[ 0 ].getIdentity() === c2[ 0 ].getIdentity(); // true
      

      Parameters

      • node: object

        Object to read

      • options: Partial<ChildrenOptions> = {}

        Options when creating traversable

      • ancestors: string[] = []

        Do not use

      • Optionalparent: TraversableTree<
            Readonly<
                {
                    _kind: "entry-static";
                    ancestors: string[];
                    name: string;
                    sourceValue: any;
                },
            >,
        >

        Do not use

      Returns TraversableTree<
          Readonly<
              {
                  _kind: "entry-static";
                  ancestors: string[];
                  name: string;
                  sourceValue: any;
              },
          >,
      >

      import { Trees } from "https://unpkg.com/@ixfx/collections/bundle"
      const myObj = { name: `Pedro`, size: 45, colour: `orange` };
      const root = Trees.FromObject.asDynamicTraversable(myObj);
      for (const v of Trees.Traverse.breadthFirst(root)) {
      // v.getValue() yields:
      // { name: 'name', sourceValue: 'Pedro' ...},
      // { name: 'size', sourceValue: 45 ... }
      // ...
      }