Class pv.Flatten
Represents a flatten operator for the specified array. Flattening allows hierarchical maps to be flattened into an array. The levels in the input tree are specified by key functions.
For example, consider the following hierarchical data structure of Barley yields, from various sites in Minnesota during 1931-2:
{ 1931: { Manchuria: { "University Farm": 27.00, "Waseca": 48.87, "Morris": 27.43, ... }, Glabron: { "University Farm": 43.07, "Waseca": 55.20, ... } }, 1932: { ... } }To facilitate visualization, it may be useful to flatten the tree into a tabular array:
var array = pv.flatten(yields) .key("year") .key("variety") .key("site") .key("yield") .array();This returns an array of object elements. Each element in the array has attributes corresponding to this flatten operator's keys:
{ site: "University Farm", variety: "Manchuria", year: 1931, yield: 27 }, { site: "Waseca", variety: "Manchuria", year: 1931, yield: 48.87 }, { site: "Morris", variety: "Manchuria", year: 1931, yield: 27.43 }, { site: "University Farm", variety: "Glabron", year: 1931, yield: 43.07 }, { site: "Waseca", variety: "Glabron", year: 1931, yield: 55.2 }, ...
The flatten operator is roughly the inverse of the pv.Nest and
pv.Tree operators.
Defined in: Flatten.js.
Constructor Attributes | Constructor Name and Description |
---|---|
pv.Flatten(map)
Constructs a flatten operator for the specified map.
|
Method Attributes | Method Name and Description |
---|---|
array()
Returns the flattened array.
|
|
key(key, f)
Flattens using the specified key function.
|
|
leaf(f)
Flattens using the specified leaf function.
|
Class Detail
pv.Flatten(map)
Constructs a flatten operator for the specified map. This constructor should
not be invoked directly; use pv.flatten instead.
- Parameters:
- map
- a map to flatten.
Method Detail
array()
Returns the flattened array. Each entry in the array is an object; each
object has attributes corresponding to this flatten operator's keys.
- Returns:
- an array of elements from the flattened map.
{pv.Nest}
key(key, f)
Flattens using the specified key function. Multiple keys may be added to the
flatten; the tiers of the underlying tree must correspond to the specified
keys, in order. The order of the returned array is undefined; however, you
can easily sort it.
- Parameters:
- {string} key
- the key name.
- {function} f Optional
- an optional value map function.
- Returns:
- {pv.Nest} this.
{pv.Nest}
leaf(f)
Flattens using the specified leaf function. This is an alternative to
specifying an explicit set of keys; the tiers of the underlying tree will be
determined dynamically by recursing on the values, and the resulting keys
will be stored in the entries keys attribute. The leaf function must
return true for leaves, and false for internal nodes.
- Parameters:
- {function} f
- a leaf function.
- Returns:
- {pv.Nest} this.