【问题标题】:Alternative to Object.keys and Object.values替代 Object.keys 和 Object.values
【发布时间】:2019-01-12 20:37:15
【问题描述】:

我在某处读到无法保证 javascript 对象中键的顺序。就像浏览器可以决定返回任何他们想要的一样。

并且在 js 中有一种新的对象类型叫做 Map,它可以让你有有序的对象。

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

【问题讨论】:

  • 您的问题到底是什么?我的意思是,您想从服务器向客户端发送Map?或者您想为从服务器返回的对象的属性指定顺序?还是什么?
  • 我的问题是如何按照在服务器上创建的顺序获取键和值
  • JSON 顺序被保留。 javascript 对象的键顺序不是。那不一样。您确实将 JSON 从服务器发送回客户端,而不是 javascript 对象。
  • 真正的问题真的是键值对的确切顺序而不是Object.keys和Object.values之间的索引对应关系吗?

标签: javascript arrays object


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2022-12-20
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2018-04-24
    相关资源
    最近更新 更多