节点映射可以由键调用,但不能由forEach()调用



我有下面的代码,可以将特定的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数据结构中实际存在的项。

我认为这将是由于异步引起的问题

您根本没有向我们显示任何异步代码。如果您确实有异步代码,那么只有当您向我们展示实际代码时,我们才能评论它的正确使用。

相关内容

最新更新