美文网首页
React-Native小知识 es6 javascript的

React-Native小知识 es6 javascript的

作者: 爱上火烧的小毛驴 | 来源:发表于2018-05-27 16:26 被阅读1160次

    (1) Map 转为数组

    前面已经提过, Map 转为数组最方便的方法, 就是使用扩展运算符(...)。

    let myMap = new Map().set(true, 7).set({
        foo: 3
    }, ['abc']);
    [...myMap]
    // [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ]
    

    (2) 数组转为 Map
    将数组转入 Map 构造函数, 就可以转为 Map。

    new Map([
            [true, 7],
            [{
                    foo: 3
                },
                ['abc']
            ]
        ])
        // Map {true => 7, Object {foo: 3} => ['abc']}
    

    (3) Map 转为对象
    如果所有 Map 的键都是字符串, 它可以转为对象。

    function strMapToObj(strMap) {
        let obj = Object.create(null);
        for (let [k, v] of strMap) {
            obj[k] = v;
        }
        return obj;
    }
    let myMap = new Map().set('yes', true).set('no', false);
    strMapToObj(myMap)
        // { yes: true, no: false }
    

    (4) 对象转为 Map

    function objToStrMap(obj) {
        let strMap = new Map();
        for (let k of Object.keys(obj)) {
            strMap.set(k, obj[k]);
        }
        return strMap;
    }
    objToStrMap({
            yes: true,
            no: false
        })
        // [ [ 'yes', true ], [ 'no', false ] ]
    

    (5) Map 转为 JSON
    Map 转为 JSON 要区分两种情况。 一种情况是, Map 的键名都是字符串, 这时可以选择转为对象 JSON。

    function strMapToJson(strMap) {
        return JSON.stringify(strMapToObj(strMap));
    }
    let myMap = new Map().set('yes', true).set('no', false);
    strMapToJson(myMap)
        // '{"yes":true,"no":false}'
    

    另一种情况是, Map 的键名有非字符串, 这时可以选择转为数组 JSON。

    function mapToArrayJson(map) {
        return JSON.stringify([...map]);
    }
    let myMap = new Map().set(true, 7).set({
        foo: 3
    }, ['abc']);
    mapToArrayJson(myMap)
        // '[[true,7],[{"foo":3},["abc"]]]'
    

    (6) JSON 转为 Map
    JSON 转为 Map, 正常情况下, 所有键名都是字符串。

    function jsonToStrMap(jsonStr) {
        return objToStrMap(JSON.parse(jsonStr));
    }
    jsonToStrMap('{"yes":true,"no":false}')
        // Map {'yes' => true, 'no' => false}
    

    但是, 有一种特殊情况, 整个 JSON 就是一个数组, 且每个数组成员本身, 又是一个有两个成员的数组。 这时, 它可以一一对应地转为 Map。 这往往是数组转为 JSON 的逆操作。

    function jsonToMap(jsonStr) {
        return new Map(JSON.parse(jsonStr));
    }
    jsonToMap('[[true,7],[{"foo":3},["abc"]]]')
        // Map {true => 7, Object {foo: 3} => ['abc']}
    

    相关文章

      网友评论

          本文标题:React-Native小知识 es6 javascript的

          本文链接:https://www.haomeiwen.com/subject/ydnbjftx.html