ordered-object
An experimental module to maintain the order of object properties.
Installation
npm install ordered-object
Usage
const orderedObject = require("ordered-json");
const obj = {a: 1, b: 2, c: 3};
Object.values(obj); // [1, 2, 3]
const obj2 = orderedObject.create(obj, ["c", "b", "a"]);
Object.values(obj2); // [3, 2, 1]
API reference
create(object, keys = Object.keys(object), unordered = null): OrderedObject
Return an object whose keys are ordered.
-
object
: an object, which can also be an ordered-keys object (proxy). -
keys
: keys of the object. Ifobject
has aproperty
which is not included inkeys
,Object.keys(OrderedObject)
won't contain the property either. However it can still be accessed fromOrderedObject.property
. -
unordered
: if provided, do some extra normalization to unordered properties (i.e. not occured inkeys
). Possible values are:-
trim
: trim unordered properties. -
start
: move unordered properties to the start. -
end
: move unordered properties to the end. -
keep
: keep the position (index) of unordered properties. With this option, you can only reorder the properties occured inkeys
. For example:const obj = create({a: 1, b: 2, c: 3}, ["c", "a"], "keep"); Object.keys(obj); // ["c", "b", "a"]
-
wrap(object): OrderedObject
Recursively convert entire object
into OrderedObject
with create
.
Notes
Changelog
-
0.2.3 (May 27, 2019)
- Fix: remove useless stuff in the package.
-
0.2.2 (May 27, 2019)
- Fix: type error when sending
null
value towrap
.
- Fix: type error when sending
-
0.2.1 (May 6, 2018)
- Fix: some keys are stripped if
Object.keys(obj).length > order.length
andunordered == "keep"
. - Fix: use a set to avoid duplicated keys.
- Fix: some keys are stripped if
-
0.2.0 (Dec 23, 2017)
- Add:
unordered
argument tocreate()
. - Change: Always create a new object in
create()
. - Remove
__raw__
property.
- Add:
-
0.1.0 (Dec 14, 2017)
- First release.