Javascript 有没有简写的方法来创建地图?

Javascript 有没有简写的方法来创建地图?,javascript,dictionary,ecmascript-6,Javascript,Dictionary,Ecmascript 6,以这段代码为例: const db = new Map() db.set('Neo4J', Neo4J.getDriver()) db.set('MongoDB', MongoDB.getDB()) 有没有办法像某种地图文字一样缩短它?我想我找到了答案。这似乎非常有效: const db = new Map([ ['Neo4J', Neo4J.getDriver()], ['MongoDB', MongoDB.getDB()] ]) 需要这样做的原因是,由于一些键包含函数作为

以这段代码为例:

const db = new Map()
db.set('Neo4J', Neo4J.getDriver())
db.set('MongoDB', MongoDB.getDB())

有没有办法像某种地图文字一样缩短它?

我想我找到了答案。这似乎非常有效:

const db = new Map([
    ['Neo4J', Neo4J.getDriver()],
    ['MongoDB', MongoDB.getDB()]
])
需要这样做的原因是,由于一些键包含函数作为值,我的DB连接驱动程序正在爆炸


地图可以很好地处理这个问题:

我想我找到了答案。这似乎非常有效:

const db = new Map([
    ['Neo4J', Neo4J.getDriver()],
    ['MongoDB', MongoDB.getDB()]
])
需要这样做的原因是,由于一些键包含函数作为值,我的DB连接驱动程序正在爆炸


Maps可以很好地处理这个问题:

Map
constructor:

一种数组或其他iterable对象,其元素是键值对(包含两个元素的数组,例如[1',1'],[2',2']])。将每个键值对添加到新映射中;空值被视为未定义

可以通过
object使用object literal定义映射。条目
返回一个由键值对组成的iterable:

new Map(Object.entries({
  Neo4J: Neo4J.getDriver(),
  MongoDB: MongoDB.getDB()
}));

Object.entries
是ES2017,在ES5和ES6中可以多填充。

Map
构造函数:

一种数组或其他iterable对象,其元素是键值对(包含两个元素的数组,例如[1',1'],[2',2']])。将每个键值对添加到新映射中;空值被视为未定义

可以通过
object使用object literal定义映射。条目
返回一个由键值对组成的iterable:

new Map(Object.entries({
  Neo4J: Neo4J.getDriver(),
  MongoDB: MongoDB.getDB()
}));

Object.entries
是ES2017,在ES5和ES6中是可多填充的。

好吧,这是文档中的第一行。。。“以…数组或其他元素为键值对的可写对象”作为参数?眼睛好,在匆忙中阅读文档是一项很好的技能。当然,我承认,我们大多数人都没有这种技能。现在您知道,
Map
Set
都接受任何iterable作为参数,通常表示任何具有长度的内容。不幸的是,这排除了大多数常规对象,它们更容易用作键->值对。好吧,这是文档中的第一行。。。“以…数组或其他元素为键值对的可写对象”作为参数?眼睛好,在匆忙中阅读文档是一项很好的技能。当然,我承认,我们大多数人都没有这种技能。现在您知道,
Map
Set
都接受任何iterable作为参数,通常表示任何具有长度的内容。不幸的是,这排除了大多数常规对象,它们更容易用作键->值对注意,只有在不关心顺序的情况下才使用
Object.entries
。Bergi的本质是什么?是因为值可以被删除并扭曲顺序,还是这对了解什么样的情况至关重要?@agm1984 Bergi指出,在JS中,对象键在法律上是无序的,它们的顺序不能依赖。它们在现代实现中事实上是有序的,特别是那些支持ES6和Map的实现。而从数组构造的映射将可靠地排序。您能否突出显示一个示例,说明排序何时会受到影响?@agm1984当上述代码在旧浏览器中使用多填充映射和Object.entries(如IE9)执行时。请参阅示例。请注意,只有在不关心顺序的情况下,才使用
Object.entries
。Bergi的本质是什么?是因为值可以被删除并扭曲顺序,还是这对了解什么样的情况至关重要?@agm1984 Bergi指出,在JS中,对象键在法律上是无序的,它们的顺序不能依赖。它们在现代实现中事实上是有序的,特别是那些支持ES6和Map的实现。而从数组构造的映射将可靠地排序。您能否突出显示一个示例,说明排序何时会受到影响?@agm1984当上述代码在旧浏览器中使用多填充映射和Object.entries(如IE9)执行时。例如,见。