immutable-sorted icon indicating copy to clipboard operation
immutable-sorted copied to clipboard

fromJS with SortedMap

Open sutbult opened this issue 5 years ago • 1 comments

I would like to request a function that works like fromJS but insert SortedMap instances instead of Map when objects are encountered.

An example is to execute this code and get the described result.

console.log(fromJSsorted(fromJS({
    z: {
        c: 1,
        b: 2,
        a: 3,
    },
    y: 5,
    x: 6,
})).toJS());

// Would print { x: 6, y: 5, z: { a: 3, b: 2, c: 1 } }

I have written this code that can perform this feature as far as is needed in the project I am currently working on. You can have it for reference.

import {
    Map,
    List,
    fromJS,
} from "immutable"
import {
    SortedMap,
} from "immutable-sorted"

function fromJSsorted(object) {
    function sort(obj) {
        if(obj instanceof List) {
            return obj.map(sort);
        }
        else if(obj instanceof Map) {
            return SortedMap(obj).map(sort);
        }
        else {
            return obj;
        }
    }
    return sort(fromJS(object));
}

sutbult avatar Jun 12 '19 15:06 sutbult