代码之家  ›  专栏  ›  技术社区  ›  Alex

Object.keys和Object.values的替代方案

  •  -1
  • Alex  · 技术社区  · 6 年前

    我在某个地方读到,javascript对象中键的顺序不能保证。喜欢的浏览器可以决定返回他们喜欢的任何内容。

    js中有一种新类型的对象称为Map,它允许您拥有有序的对象。

    但是,当我将数据从服务器发送到浏览器时,如何使用它呢?无法传递对象,我必须使用json进行字符串化,然后Map类在浏览器中丢失

    1 回复  |  直到 6 年前
        1
  •  2
  •   Barmar    6 年前

    如果您试图通过JSON发送一个有序映射,并保留其顺序,那么可以将映射拆分为键和值数组,然后将它们放回接收器中。

    服务器:

    function mapToJSON(map) {
        return JSON.stringify({keys: Array.from(map.keys()), values: Array.from(map.values())});
    }
    

    客户:

    function JSONToMap(json) {
        const {keys, values} = JSON.parse(json);
        const map = new Map;
        keys.forEach(key, i) {
            map.set(key, values[i]);
        }
        return map;
    }