我有下面的代码,可以将特定的Map((键记录到控制台,但不能使用for each生成任何输出:
let teamlist = new Map()
//code to populate the map
console.log(teamlist) //Shows entire map and data in console
console.log(teamlist[0]) //Shows one entry from the map
teamlist.forEach(team =>{
console.log(team) //Shows no console output, not even "undefined"
})
我认为这将是一个由异步引起的问题,但这没有意义,因为我可以调用单独的密钥?我可以不在地图上调用forEach((吗?
如果您没有正确地将项目添加到Map
中,则可能会出现这种情况。
例如,如果你这样做:
let teamlist = new Map();
teamlist[0] = "hello";
然后,您在那里所做的是向teamlist对象添加[0]
属性,而不向Map
本身添加条目。请记住,每个Map
对象也是一个正则对象,并且可以具有不属于Map
特定数据结构的正则属性。要将项目添加到Map
对象,必须使用.set()
方法,如下所示:
let teamlist = new Map();
teamlist.set("some greeting", "hello");
teamlist.set("another greeting", "goodbye");
teamlist.forEach(team => {
console.log(team);
});
当然,如果您向我们展示您用于向Map对象实际添加项目的代码,那么我们可以通过对该代码的具体更正来更具体地回答。
我可以不在地图上调用forEach((吗?
可以,但它只迭代Map数据结构中实际存在的项。
我认为这将是由于异步引起的问题
您根本没有向我们显示任何异步代码。如果您确实有异步代码,那么只有当您向我们展示实际代码时,我们才能评论它的正确使用。