替代Object.keys和Object.values

时间:2019-01-12 20:37:15

标签: javascript arrays object

我在某处读到,不能保证javascript对象中的键顺序。就像浏览器可以决定返回任何感觉一样。

js中有一种名为Map的新型对象,可以让您拥有有序对象。

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

1 个答案:

答案 0 :(得分:2)

如果您尝试通过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;
}