假设我想创建一个字典,例如,一个或多个车型的汽车品牌。
在ES6中,我似乎可以用两种不同的方式做到这一点。
1.创建对象映射:
代码:
const makesAndModels = {
"mazda": [
{ name: "Miata" },
{ name: "626" }
],
"toyota": [
{ name: "Camry" }
],
...
};
2.创建ES6 Map实例:
代码:
const makes = {
mazda: { name: "Mazda" },
toyota: { name: "Toyota" }
};
const makesAndModels = new Map([
[makes.mazda, [
{ name: "Miata" },
{ name: "626" }
]],
[makes.toyota, [
{ name: "Camry" }
]],
...
]);
以上两种方法的主要区别和优缺点是什么?
以下是迄今为止我发现的差异:
>
Map允许您使用任何类型的密钥。因此,如果您愿意,您可以将整个对象存储在键中,对于索引签名,TypeScript目前只支持字符串或数字键。
Map仅在ES6中受本机支持。如果目标为ES5或更低,则需要提供polyfill。
不确定这些是否详尽无遗。
编辑:刚刚在Mozilla文档中发现了一个对象和地图比较部分,看起来很全面。
包括上述未提及的以下项目:
>
使用size属性可以轻松获得贴图的大小,而对象中属性的数量必须手动确定。
映射是一个iterable,因此可以直接迭代,而对对象进行迭代需要以某种方式获取其键并对其进行迭代。
一个对象有一个原型,因此如果你不小心的话,地图中的默认关键点可能会与你的关键点发生碰撞。从ES5开始,可以使用map=Object绕过这一点。create(null),但很少这样做。
在涉及频繁添加和删除密钥对的场景中,Map可能表现得更好。
我一直在看MDN上的新ES6文档,我找不到地图对象的实际用途,因为普通对象无法工作。有没有人有地图的使用案例,并解释为什么一个对象在这种情况下不能工作?
目前,我在项目中使用protobuf版本2。到目前为止,所有的信息都很有效;然而,我在尝试使用“map”关键字时遇到了一个障碍。 需要映射背后的TLDR用法是,我想将一些JSON键/值对传递给服务器进行查找,并将可能的数据日志传递给服务器(使用JSON消息接口)。 我目前正在使用文档页面上推荐的向后兼容方法:https://developers.google.com/protocol-buffer
有没有更好的方法来转换贴图
参考[Stackoverflow]Scala:将map转换为case类我尝试复制其中一个响应,我看到以下错误: <代码>无法构造com的实例。实践斯卡拉。Test“(不存在任何创建者,如默认构造):无法从[源:未知;行:-1,列:-1]处的对象值(无委托或基于属性的创建者)反序列化 代码: 这个错误说明了什么?我错过了什么吗?
我有一个4个工人的分布式系统,每个工人发送1张地图 我尝试的方法是将workers中的所有映射项收集到ArrayList中,然后使用并行流,我想使用reduce方法将它们减少到一个列表中,并将其初始化到reducer中。这是我的代码: 我在reduce方法上得到以下编译错误: 方法reduce(Map
我正在尝试使用mapbox创建多段线贴图,我能够正确地创建它。用户可以返回并在其配置文件中查看多段线地图。 疑问-是否有任何方法可以将我的lat long列表转换为某种格式并存储在db中,然后从db中获取并渲染贴图? 我也检查了geojson格式,但如果我们将geojson与mapbox一起使用,它将生成静态映射。 我使用flutter_map生成地图。 更新- 目前我正在使用flutter_ma