【发布时间】:2019-02-20 15:14:33
【问题描述】:
假设我想创建一个字典,例如,一个或多个模型的汽车制造商。
似乎我可以在 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" }
]],
...
]);
以上两种方法的主要区别和优缺点是什么?
【问题讨论】:
-
您在示例中创建的地图有一个严重的问题:您无法通过键获取值。因为映射使用标准相等性比较键并且无法自定义,所以
makesAndModels[{name: "Mazda"}]将始终评估为undefined。 -
嗯,你是...将修复示例。
-
其实我有点误会了。您可以使用 map.keys 获取密钥。
-
我正在考虑概括这个问题,因为我认为它实际上通常适用于 Javascript,而不仅仅是 Typescript。有人同意吗?如果是,请支持此评论?
-
您的第二个代码没有意义。为了与第一个比较,它也应该使用字符串作为
Map的键